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

时间:2013-10-31 14:50:49

标签: javascript

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

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

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

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

我的问题是,有什么区别? ()最后是什么?

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

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

4 个答案:

答案 0 :(得分:11)

()在函数结束时,在声明

后立即调用此function
window.onload=function(){
 //code ehere
}() // function is called 

在这种情况下

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

之后将调用

函数

window.onload()

答案 1 :(得分:5)

当你在lambda函数之后有()时,就意味着你正在该行上立即调用该函数。

所以,例如,

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

将在控制台中记录5。在

的情况下
window.onload=function() {
    //code here
}();

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

例如,

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

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

答案 2 :(得分:4)

function已分配给onload

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

function的结果已分配给onload

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

答案 3 :(得分:1)

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