【问题标题】:JavaScript scope oddity [duplicate]JavaScript范围奇怪[重复]
【发布时间】:2014-03-23 17:10:07
【问题描述】:

我不明白为什么在 scopeTest 函数退出后全局 x 恢复为 1。有人可以向我解释一下吗?如果我在函数的局部范围内注释掉 x 的定义,x 会改变并指向 200。否则,它仍然是 1... !!!

//setting global variable x to 1
var x = 1;

function scopeTest() {
    x = 200; //setting global x to 200
    alert(x); //200

    var x = 500; //creating a local variable x and setting it to 500
    alert(x); //500
}
scopeTest();
alert(x); //why is x 1 instead of 200?

【问题讨论】:

标签: javascript


【解决方案1】:

欢迎来到变量吊装陷阱:
在 javasript 中,变量声明被移动到外部(包含)函数的开头,所以你的代码实际上相当于:

function scopeTest() {
    var x;
    x = 200; //setting local x to 200
    alert(x); //200

    x = 500; //creating a local variable x and setting it to 500
    alert(x); //500
}

【讨论】:

    猜你喜欢
    • 2020-03-24
    • 1970-01-01
    • 2019-06-07
    • 2012-06-17
    • 1970-01-01
    • 2020-08-17
    • 2014-03-16
    • 2012-01-06
    • 2013-09-27
    相关资源
    最近更新 更多