请看以下两个函数: functiona(){alert("a")}//函数1varb=function(){alert("b")}//函数2 它们俩有何不同呢?翻开书,作者会告诉我们,前者为函数声明,
请看以下两个函数:
function a(){ alert("a") }//函数1var b= function(){ alert("b") }//函数2
它们俩有何不同呢?翻开书,作者会告诉我们,前者为函数声明,后者为函数表达式。函数声明作为一种声明,当然会在预编译阶级有所动作(声明提前),而函数表达式则不会。另一个区别是,函数声明是语句,语句是没有返回值,不能直接加一对括号让它们执行,例如:
function a (){ alert("a") }();//报错var b = function(){ alert("b") }();//正确
纠正:给 function 外套一对括号就不报错了,括号是表达式,是表达式就有返回值,所以可以在后面加一对括号让它们执行,例如:
(function a (){ alert("a") })();//没有问题
另外,我们知道,函数名的作用就是用来引用的,现在没用了,我们是不是可以把它去掉呢?
(function (){ alert(arguments.callee) })();//弹出自身
注意:JS中的函数不主动调用时不会加载的时候运行的,下面两种方法都可以:
(function abc(){alert(22);})();//让函数自动运行function abc(){alert(22);}abc();//让函数自动运行