为什么window.onload允许我在用作函数表达式时使用函数?

时间:2014-09-10 14:55:34

标签: javascript

据我所知,如果要将函数表达式用于顶部提升的函数声明,则必须在顶部表示函数表达式。

当我使用window.onload调用我的构造函数时,它可以工作。但是,如果我没有window.onload,并在我的函数表达式之前调用我的构造函数,则代码会中断。

<script type="text/javascript">

        window.onload = function () {
            var c = new C();
        }  // this works, but if i delete window.onload the code breaks.

        var C = function () {
            console.log("test");

        };

 </script>

2 个答案:

答案 0 :(得分:0)

这很简单。 window.onload稍后执行,当定义了C时,如果你只是调用new C它将抛出,因为C未定义。

定义后移动您的通话,或使用&#39;功能&#39;定义它。关键字,而不是&#39; var&#39;

答案 1 :(得分:0)

window.onload不会立即被触发。窗口加载完成后会被触发。

你正在做的是“执行此功能以在窗口加载完成后创建一个新变量'c'。”

但是,由于var C在全局范围内定义,因此会立即为其分配其函数值。因此,它可以在window.load执行时进行评估。