【发布时间】:2018-02-17 06:39:17
【问题描述】:
我在 html 文件中插入了以下代码:
<script>
console.log(myVar);
var myVar = 1;
</script>
在浏览器中打开此 html 页面后,myVar 的值将未定义。 据我了解,这是 javascript 中的正常行为,因为它首先设置 内存空间,然后执行代码。
现在奇怪的部分是,如果我们这样拆分同一个 html 页面:
<script>
console.log(myVar);
</script>
<script>
var myVar = 1;
</script>
结果将是:Uncaught ReferenceError: myVar is not defined
为什么?
这与变量的范围无关,它与提升有关,似乎提升仅在 javascript 块内,不适用于其他 javascript 块中的整个加载页面。这里也是同样的例子:
<script>
myFunc();
function myFunc() {
console.log('Hello!');
}
</script>
VS
<script>
myFunc();
</script>
<script>
function myFunc() {
console.log('Hello!');
}
</script>
【问题讨论】:
-
第二点的参考资料我没有很好的答案,所以我会推迟到其他人。关于第一点:那是由于“提升”。
标签: javascript