js你不是的那些基础问题-函数

Posted wernerwu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js你不是的那些基础问题-函数相关的知识,希望对你有一定的参考价值。

1 概述

1.1 函数的声明

  javascript 有三种声明函数的方法。

  (1)function 命令

function命令声明的代码区块,就是一个函数。function命令后面是函数名,

函数名后面是一对圆括号,里面是传入函数的参数。函数体放在大括号里面。

function print(s) 
  console.log(s);

  上面的代码命名了一个print函数,以后使用print()这种形式,

  就可以调用相应的代码。这叫做函数的声明(Function Declaration)。

  (2)函数表达式

  除了用function命令声明函数,还可以采用变量赋值的写法。

var print = function(s) 
  console.log(s);
;

  这种写法将一个匿名函数赋值给变量。这时,这个匿名函数又称函数表达式(Function Expression),

  因为赋值语句的等号右侧只能放表达式。

  采用函数表达式声明函数时,function命令后面不带有函数名。

  如果加上函数名,该函数名只在函数体内部有效,在函数体外部无效。

var print = function x()
  console.log(typeof x);
;

x
// ReferenceError: x is not defined

print()
// function

  上面代码在函数表达式中,加入了函数名x。这个x只在函数体内部可用,指代函数表达式本身,

  其他地方都不可用。这种写法的用处有两个,一是可以在函数体内部调用自身,

  二是方便除错(除错工具显示函数调用栈时,将显示函数名,而不再显示这里是一个匿名函数)。

  因此,下面的形式声明函数也非常常见。

var f = function f() ;

  需要注意的是,函数的表达式需要在语句的结尾加上分号,表示语句结束。

  而函数的声明在结尾的大括号后面不用加分号。

  总的来说,这两种声明函数的方式,差别很细微,可以近似认为是等价的。

 

  (3)Function 构造函数

  第三种声明函数的方式是Function构造函数。

var add = new Function(
  ‘x‘,
  ‘y‘,
  ‘return x + y‘
);

// 等同于
function add(x, y) 
  return x + y;

  上面代码中,Function构造函数接受三个参数,除了最后一个参数是add函数的“函数体”,

  其他参数都是add函数的参数。

  你可以传递任意数量的参数给Function构造函数,只有最后一个参数会被当做函数体,

  如果只有一个参数,该参数就是函数体。

var foo = new Function(
  ‘return "hello world";‘
);

// 等同于
function foo() 
  return ‘hello world‘;

  

 

 

 

 

 

 

 

 

 

 

文章内容转自阮一峰老师 JavaScript教程 https://wangdoc.com/javascript/index.html

以上是关于js你不是的那些基础问题-函数的主要内容,如果未能解决你的问题,请参考以下文章

js你不知的那些基础问题-对象

关于js基础easy忘记的那些事儿

jQuery UI:“基础不是构造函数”

深度学习都需要学习那些内容?

PHP基础面试题 – 第三天

Python 3基础教程28-内置函数