9

我在一个项目中使用了以下不起作用的代码:

window.onload=function(){
 //code here
};

但是如果我在末尾添加 () 它可以工作:

window.onload=function(){
 //code here
}();

我的问题是,有什么区别?() 结尾是什么?

我认为第一个不起作用,因为在其他地方“onload”已经被称为杀死这个。

如果我总是使用第二个选项,它会有相同的行为吗?

4

4 回答 4

11

()在函数结束时,function在声明后立即调用 this

window.onload=function(){
 //code ehere
}() // function is called 

在这种情况下

window.onload=function(){
 //code here
}; 

函数将在之后调用

window.onload()
于 2013-10-31T14:52:53.553 回答
5

当你有()这样的 lambda 函数时,这意味着你在该行立即调用该函数。

所以,例如,

var x=function() {
    return 5;
}();
console.log(x);

将在控制台中记录 5。如果是

window.onload=function() {
    //code here
}();

该函数很可能返回另一个在页面加载时被调用的函数。

例如,

window.onload=function() {
    return function() {
        console.log("Hello!");
    };
}();

将记录“你好!” 页面加载时在控制台中。

于 2013-10-31T14:56:19.373 回答
4

function被分配到onload

window.onload=function(){
 //code ehere
};

结果function分配给onload

window.onload=function(){
 //code ehere
}();
于 2013-10-31T14:54:57.063 回答
1

使用()您定义的函数会立即调用。在这种情况下,它最好返回一个分配给 window.onload 的函数。

于 2013-10-31T14:54:01.273 回答