1.函数声明
function fa1 (n1, n2){
return n1 + n2
};
2.函数表达式法,又叫 函数字面量法
var fa2 = function(n1,n2){
return n1 + n2;
};
var fa3 = (function(a1, a2){
return a1 + a2
})(22, 33);
console.log(fa3) =====>> 55
以上两者的区别: 解析器会优先读取函数声明,并使其在执行任何代码前都可以访问; 函数表达式则必须在解析器执行到他所在的代码行的时候才会被正确解释执行。
3.函数构造法,又叫关 键字法(new)
var fa4 = new Function('n1', 'n2', 'retuen n1 + n2');
console.log(fa4(11, 55)) ====>> 66
var date = new Date();
注意:关键字法 参数必须用引号括起来
**同以上两种方法的区别 ** Function() 构造函数方法 执行的时候会解析两次,先解析主体函数一次,并创建一个新的函数对象,再解析新的函数,获取正确解析执行的结果。所以当在一个循环或频繁执行的函数中调用Function()构造函数效率是非常低的。而函数字面量却不是每次遇到都会重新编译的,用Function()构造函数创建一个函数时并不遵循典型的作用域,它一直把它当作是顶级函数来执行。