据我所知,如果要将函数表达式用于顶部提升的函数声明,则必须在顶部表示函数表达式。
当我使用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>
答案 0 :(得分:0)
这很简单。 window.onload稍后执行,当定义了C时,如果你只是调用new C
它将抛出,因为C未定义。
定义后移动您的通话,或使用&#39;功能&#39;定义它。关键字,而不是&#39; var&#39;
答案 1 :(得分:0)
window.onload不会立即被触发。窗口加载完成后会被触发。
你正在做的是“执行此功能以在窗口加载完成后创建一个新变量'c'。”
但是,由于var C在全局范围内定义,因此会立即为其分配其函数值。因此,它可以在window.load执行时进行评估。