一、常见函数对象的方法
先理清楚函数对象的几种创建方法:
1、使用function操作符创建
- 函数声明语法创建
- 函数表达式创建(匿名函数)
2、使用Function构造函数创建
二、代码示例
下面是不同创建方法对应的代码示例:
1.函数声明语法创建
//使用函数声明语法创建函数对象,最常用
function sum (num1, num2) {
return num1 + num2;
}
2.函数表达式方法创建(匿名函数)
//使用函数表达式创建函数对象
var sum = function(num1, num2){
return num1 + num2;
};
注意,使用函数表达式创建函数对象时,function 关键字后面没有函数名。这是因为在使用函数表达式定义函数时,没有必要使用函数名——通过变量 sum 即可以引用函数。另外,还要注意函数末尾有一个分号,就像声明其他变量时一样。
3.使用Function构造函数创建
//使用Function构造函数——不推荐使用
var sum = new Function("num1", "num2", "return num1 + num2");
Function 构造函数可以接收任意数量的参数,但最后一个参数始终都被看成是函数体,而前面的参数则枚举出了新函数的参数。——不推荐使用
三、比较
1.函数表达式和函数声明有什么不同之处
在js中,函数声明可以在函数调用之后出现,但是如果以函数表达式形式定义函数,必须出现在函数调用之前:
//函数声明可以在函数调用之后出现
alert(sum(10,10));
function sum(num1, num2){
return num1 + num2;
}
//不可行,报错
alert(sum(10,10));
var sum = function(num1, num2){
return num1 + num2;
};
但是,这是为什么呢?因为js在代码执行之前会有一个函数声明提升function declaration hoisting
的过程,读取并将函数声明添加到执行环境中。这个执行环境可以理解为作用域。
2.使用function创建函数对象和使用Function有什么区别
其实格式上的区别比较大,并且创建函数对象,多使用function操作符,不推荐使用Function构造函数
Reference:
- 《JS高级程序设计》