function a(){ alert("a"); }();
这段代码为什么不能弹出a,,求解答。谢谢
走同样的路,发现不同的人生
你有很多种方法让他弹出a,比如:
~function a(){ alert("a"); }(); -function a(){ alert("a"); }(); +function a(){ alert("a"); }(); !function a(){ alert("a"); }();
当然,最正统的是这样:
(function a(){ alert("a"); })();
原理是: 通过前面的符号,让这个语句强制解析成表达式,再加上你最后的一对小括号,让表达式执行,美其名曰 立即执行的函数表达式(IIFE)。
再扯点。。
你的函数 function a(){ alert('a'); } 可以用函数字面量来写,即 var a = function(){ alert('a'); } 这样的话,你通过这样就可以执行函数a了 a(); // alert ==> a
所以 在你的函数外没套上小括号的时候,像这样 function a(){ alert('a'); } // 语句 (function a(){ alert('a'); }) // 表达式 而后面跟的小括号() 是让你的表达式执行而已 (function a(){ alert('a'); })() 就像这样 a()
楼上说得对,表达式语句不能以 function 开头。 参考 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262....
function
你有很多种方法让他弹出a,比如:
当然,最正统的是这样:
原理是: 通过前面的符号,让这个语句强制解析成表达式,再加上你最后的一对小括号,让表达式执行,美其名曰 立即执行的函数表达式(IIFE)。
再扯点。。
楼上说得对,表达式语句不能以
function
开头。参考 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262....