相关疑难解决方法(0)

为什么需要在同一行上调用匿名函数?

我正在阅读一些关于闭包的帖子,到处都看到了这个,但是没有明确的解释它是如何工作的 - 每次我被告知要使用它......:

// 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
})();
Run Code Online (Sandbox Code Playgroud)

好的,我看到我们将创建新的匿名函数,然后执行它.所以在那之后这个简单的代码应该工作(并且确实如此):

(function (msg){alert(msg)})('SO');
Run Code Online (Sandbox Code Playgroud)

我的问题是这里发生了什么样的魔术?当我写作时我想:

(function (msg){alert(msg)})
Run Code Online (Sandbox Code Playgroud)

然后会创建一个新的未命名函数,如函数""(msg)...

但那么为什么这不起作用?

(function (msg){alert(msg)});
('SO');
Run Code Online (Sandbox Code Playgroud)

为什么它需要在同一行?

你能指点一些帖子或给我解释一下吗?

javascript anonymous-function iife

372
推荐指数
8
解决办法
29万
查看次数

JavaScript命名对象函数

相当新的JS,

使用具有函数的对象的简单示例:

var person = {
    name: "Bob McBobson",
    talk: function descriptiveFunctionName() {alert("Hello");}
};
Run Code Online (Sandbox Code Playgroud)

我注意到你可以命名对象函数(例如上面的descriptiveFunctionName)

有没有这种情况需要/有帮助而不是匿名?

javascript javascript-objects

2
推荐指数
1
解决办法
48
查看次数