以下代码段是什么意思?

时间:2017-12-01 13:23:56

标签: javascript

false

它只是意味着,在<script type="text/javascript"> window.onload = function(){ //some code },function(){ // some code }(); </script> 事件上执行多个函数吗?

3 个答案:

答案 0 :(得分:1)

  

它只是意味着,在window.onload上执行多个函数   事件

window.onload事件只会执行一项功能。

了解原因:

我们这里有两位对我们很重要的运营商:=,

window.onload = function1(){ }, function2(){ }()

但是,由于=运算符优先于,运算符,因此,的左侧变为:

window.onload = function1(){ ... }

而不是这个:

function1(){ ... }

这就是为function1分配给window.onload而不是function2的原因。

然后,运算符的右侧运行,即function2 - 因为它是一个IIFE,它会在那里被调用,但它的返回值不存储在任何地方。

有关优先规则,请参阅operator associativity & precedence

总结执行顺序:

  1. 将function1传递(未执行)到window.onload
  2. function2被执行
  3. ...一段时间后,当文档加载完成后,它会执行function1

答案 1 :(得分:0)

不,这并不意味着它将执行多个功能。如果你想实现这样做(source):

function func1() {
    //some code
}

function func2() {
    //some code
}

window.onload = function(){
    func1();
    func2();
};

在函数后使用括号()表示您立即执行此函数,因此您不想使用它。

您在示例中显示的逗号在这种情况下根本不执行任何操作。

你只是分开它。您将第一个函数绑定到onload事件,然后执行annonymus函数(因为您使用括号()

也许正确的格式可以帮助您更清楚地看到它:

window.onload = function(){
    //some code
},

function(){
    // some code
}();

答案 2 :(得分:0)

function(){}()(我们称之为 f1 )使用的语法意味着“加载javascript后立即执行我”。

在这种情况下,只要加载标记中的整个脚本,就会执行 f1

之后,一旦触发了windows.load事件,就会调用onload相关函数。