【发布时间】:2016-08-27 14:14:05
【问题描述】:
这些是必须达到相同结果的 2 个示例:
示例 1
<script>
console.log(a);
var a = 10;
console.log(a);
</script>
渲染
<script>
var a = "";
console.log(a); //will result undefined
a = 10;
console.log(a); //will result 10
</script>
结果
undefined
10
示例 2
<script>
console.log(a);
a = 10;
console.log(a);
</script>
渲染预期
<script>
var a = "";
console.log(a); //should result undefined
a = 10;
console.log(a); //should result 10
</script>
结果
现在,根据 场景 2 中的 JS 提升,如果未声明的变量必须已自动声明到其作用域的顶部,并且结果应该是相同的。为什么不是?理念失败在哪里?
【问题讨论】:
-
从哪里获取渲染的代码信息?
-
只需输入
var a = 10,您就会得到您所期望的。a = 10和var a = 10不一样:stackoverflow.com/questions/1470488/… -
我写了JS必须如何渲染代码!
-
""不是未定义的。 -
好的,@Peterson,因为它是错误的 :)
标签: javascript scope hoisting