的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中的代码,它似乎:
Main()
。但是它不会在该函数中执行语句alert("foo")
。有人可以更详细地解释一下发生了什么吗?
onload
。 var Main;
,则不会发生上述步骤。奖励:在WebStorm中,它将window.onload
字段的值显示为null
,将Main
的值显示为void
。 null
和void
的值之间有什么区别?
答案 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
基本上设置为undefined
。 window.onload
需要回调function
,如此......
var Main = function() { my_main_function() }