【发布时间】:2016-11-23 12:08:05
【问题描述】:
我有一个关于 JavaScript 范围的问题。
如果我有这个代码:
var v = 10;
function fun() {
v = 20;
if (v > 10) {
var v = 0;
}
}
fun();
为什么 v 还是 10,执行完 fun(); ?
我的意思是不是v = 20; 全球?那么它不会将 v 的值从 10 = 20 改变吗?
我有点困惑,我已经尝试阅读有关 JavaScript 范围的信息,但没有帮助我理解为什么它仍然是 10...
如果有人能给我一个解释,我将非常感激...... :)
【问题讨论】:
-
看到 this answer 到一个非常相似的问题 - 不要让任何人告诉你这不是因为 javascript 变量提升
-
而不是发布答案 this fiddle 显示 javascript 如何“解释”(不是最好的词)代码
-
@JaromandaX 没有将其标记为重复的任何具体原因?
-
@Rajesh - 想看看 OP 是否首先了解相似性
-
@JaromandaX 所以它将 var v 的初始化从 if() 提升到函数的开头,以便 v=20 影响 var v 而不是全局变量 v?
标签: javascript scope