为什么需要在同一行上调用匿名函数?我读了一些关于闭包的文章,到处都看到了这种情况,但是没有明确的解释-每次我被告知要使用它时…:// Create a new anonymous function, to use as a wrapper(function(){
// The variable that would, normally, be global
var msg = "Thanks for visiting!";
// Binding a new function to a global object
window.onunload = function(){
// Which uses the 'hidden' variable
alert( msg );
};// Close off the anonymous function and execute it})();好的,我看到我们将创建新的匿名函数,然后执行它。因此,在此之后,这个简单的代码应该可以工作(而且它确实起作用):(function (msg){alert(msg)})('SO');我的问题是这里会发生什么魔法?当我写到:(function (msg){alert(msg)})然后将创建一个新的未命名函数,如函数“(Msg).但是为什么这个不起作用呢?(function (msg){alert(msg)});('SO');为什么要排在同一条线上?你能告诉我一些帖子或者解释一下吗?
3 回答
慕莱坞森
TA贡献1810条经验 获得超4个赞
var message = 'SO';function foo(msg) { alert(msg);}foo(message);
var message = 'SO';function foo(msg) { //declares foo alert(msg);}(foo)(message); // calls foo
var message = 'SO';(function foo(msg) { alert(msg);})(message); // declares & calls foo
var message = 'SO';(function (msg) { // remove unnecessary reference to foo alert(msg);})(message);
(function (msg){alert(msg)}); ('SO'); // nothing.(foo); (msg); //Still nothing.
(foo)(msg); //works
添加回答
举报
0/150
提交
取消