这是我在页面加载时测试的脚本。

window.onload = initAll;

function initAll() {
document.getElementById("pTag").innerHTML = "Hello Java Script !";
}


直到我在initAll()中加了像call. _( window.onload=initAll(); )_这样的括号,上述脚本才能正常工作。如果在函数调用期间使用initAll(),则什么也不会发生。就像脚本不在那儿。

为什么会这样呢?

最佳答案

window.onload期望您为其设置的值是一个函数(函数类似于JavaScript中的任何其他对象)。

如果将括号放在initAll之后,则实际上会调用该函数并将window.onload设置为该函数的返回值。由于该函数未明确显示return任何内容,因此该值为undefined。因此,在实践中您可以想到以下代码:

window.onload = initAll();

function initAll() {
    // do something with document
}


等效于以下代码:

var result = initAll();
window.onload = result;

function initAll() {
    return null;
}


我敢肯定,您可以立即了解为什么这行不通。

07-26 03:36