javascript中这个window.onload场景的调用流程是什么

时间:2012-03-11 22:51:39

标签: javascript onload

的index.html

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <script src="Script1.js"></script>
    <script src="Script2.js"></script>
</head>
<body>

</body>
</html>

Script1.js

var Main;
window.onload = Main;

Script2.js

function Main() {
    alert("foo");
}

如果我抛出一个断点@ var Main;并逐步浏览WebStorm中的代码,它似乎:

  1. 加载Script1.js。
  2. 加载Script2.js。
  3. 致电Main()
  4. 但是它不会在该函数中执行语句alert("foo")。有人可以更详细地解释一下发生了什么吗?

    • 注意:我意识到您应该避免使用onload
    • 注意:我意识到我可以重新订购脚本,它会显示警报。
    • 注意:如果我省略语句var Main;,则不会发生上述步骤。

    奖励:在WebStorm中,它将window.onload字段的值显示为null,将Main的值显示为voidnullvoid的值之间有什么区别?

2 个答案:

答案 0 :(得分:1)

Script1.js的内容:

var Main; // declare but do not initialize a variable named "Main"
window.onload = Main; // sets the onload handler to that *undefined* variable

名为Main的函数根本就不会被调用。


奖励问题:What is the point of void operator in JavaScript?void @ MDC。 TL; DR:void是一个始终返回undefined的运算符。你明白the difference between null and undefined吗?

答案 1 :(得分:1)

由于脚本1中的Main为空variable,因此window.onload基本上设置为undefinedwindow.onload需要回调function,如此......

var Main = function() { my_main_function() }