创建函数的方式:函数声明、函数表达式、还有一种不常见的方式就是Function构造器。
函数声明:
function add(a,b) {
a = +a;
b = +b;
if (isNaN(a) || isNaN(b)) {
return;
}
return a + b;
}
函数表达式的几种方式:
// 函数表达式
var add = function(a, b) {
// do sth
}
// 匿名函数定义的一个立即执行函数表达式
(function() {
// do sth
})();
// 作为返回值的函数表达式
return function() {
// do sth
};
// 命名式函数表达式
var add = function foo (a, b) {
// do sth
}
函数声明与函数表达式的主要区别就是:函数声明会被前置
函数声明前置:
// function add(a,b) 已经声明前置了,可以正常调用
var num = add(1, 2);
console.log(num); // 3
function add(a,b) {
a = +a;
b = +b;
if (isNaN(a) || isNaN(b)) {
return;
}
return a + b;
}
函数表达式前置:
// var add 变量声明提前,此时变量的值是undefined
var num = add(1, 2);
console.log(num); // TypeError:undefined is not a function
var add = function(a, b) {
a = +a;
b = +b;
if (isNaN(a) || isNaN(b)) {
return;
}
return a + b;
}
Function构造器:
var func = new Function('a', 'b', 'console.log(a+b);');
fun(1, 2); // 3
// 和上面的方式没有区别
var func = Function('a', 'b', 'console.log(a+b);');
func(1, 2); // 3
区别:

网友评论