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

the*_*azz 9 javascript

我在项目中使用以下代码,该代码无效:

window.onload=function(){
 //code here
};
Run Code Online (Sandbox Code Playgroud)

但如果我在最后添加()它的工作原理:

window.onload=function(){
 //code here
}();
Run Code Online (Sandbox Code Playgroud)

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

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

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

Ily*_*lya 11

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

window.onload=function(){
 //code ehere
}() // function is called 
Run Code Online (Sandbox Code Playgroud)

在这种情况下

window.onload=function(){
 //code here
}; 
Run Code Online (Sandbox Code Playgroud)

函数将被调用

window.onload()
Run Code Online (Sandbox Code Playgroud)


TND*_*TND 5

当你拥有()像这样的lambda函数之后,这意味着你正在该行上立即调用该函数.

所以,例如,

var x=function() {
    return 5;
}();
console.log(x);
Run Code Online (Sandbox Code Playgroud)

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

window.onload=function() {
    //code here
}();
Run Code Online (Sandbox Code Playgroud)

该函数最有可能返回页面加载时调用的另一个函数.

例如,

window.onload=function() {
    return function() {
        console.log("Hello!");
    };
}();
Run Code Online (Sandbox Code Playgroud)

将记录"你好!" 在页面加载时在控制台中.