首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >window.onload = function(){ ..}/ window.onload = function(){ ..}();

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

Stack Overflow用户
提问于 2013-10-31 22:50:49
回答 4查看 239关注 0票数 9

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

代码语言:javascript
复制
window.onload=function(){
 //code here
};

但是如果我在结尾处添加(),它就会起作用:

代码语言:javascript
复制
window.onload=function(){
 //code here
}();

我的问题是,有什么不同?最后的()是什么?

我假设第一个不起作用,因为在其他地方,"onload“已经被调用了killing this。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-31 22:52:54

函数末尾的(),在声明后立即调用此function

代码语言:javascript
复制
window.onload=function(){
 //code ehere
}() // function is called 

在这种情况下

代码语言:javascript
复制
window.onload=function(){
 //code here
}; 

函数将在以下位置调用

代码语言:javascript
复制
window.onload()
票数 11
EN

Stack Overflow用户

发布于 2013-10-31 22:56:19

当你在这样一个lambda函数后面有()的时候,这意味着你是直接在该行上调用这个函数。

举个例子,

代码语言:javascript
复制
var x=function() {
    return 5;
}();
console.log(x);

将在控制台中记录5。在以下情况下

代码语言:javascript
复制
window.onload=function() {
    //code here
}();

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

例如,

代码语言:javascript
复制
window.onload=function() {
    return function() {
        console.log("Hello!");
    };
}();

将会记录"Hello!“当页面加载时,在控制台中。

票数 5
EN

Stack Overflow用户

发布于 2013-10-31 22:54:57

function分配给onload

代码语言:javascript
复制
window.onload=function(){
 //code ehere
};

function的结果赋值给onload

代码语言:javascript
复制
window.onload=function(){
 //code ehere
}();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19709710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档