1

我有一段代码正在检查变量是否存在,如果不存在,它会设置变量。代码是:

if (typeof myVariable == "undefined") {
  console.log("Inside the if statement");
}

当变量存在时,它不会进入 if 语句,一切都很好。但是,当我将代码更改为:

if (typeof myVariable == "undefined") {
  var myVariable = "";
}

我遇到了一个问题,即 if 语句每次都会触发,即使变量已经被定义并且它被覆盖。

是否有理由通过更改其中的内容来触发 if 语句的条件?

4

2 回答 2

0

您只需要了解变量的范围。在此示例中, myVar 的作用域为 foo 方法。

function foo(myVar) {
    if(typeof myVar == 'undefined') {
        myVar = 'defaultValue';
    }

    console.log(myVar);
}

foo(); => 'defaultValue'

foo('bar'); => 'bar'

我怀疑您遇到了问题,您可能在一个范围内定义“myVariable”,然后期望转移到另一个范围。发生这种情况的唯一方法是“myVariable”在全局范围内。

于 2013-11-08T18:02:51.477 回答
-3

应该:

if (typeof myVariable == undefined) {
  console.log("Inside the if statement");
}

未定义周围没有引号。

于 2013-11-08T17:53:55.840 回答