如果语句条件由javascript中if语句内的内容触发

时间:2013-11-08 17:51:19

标签: javascript if-statement

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

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

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

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

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

是否有理由因改变if内部的内容而触发if语句的条件?

2 个答案:

答案 0 :(得分:0)

您只需要了解变量的范围。在这个例子中,myVar的范围是foo方法。

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

    console.log(myVar);
}

foo(); => 'defaultValue'

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

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

答案 1 :(得分:-3)

应该是:

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

未定义周围没有引号。