在nodejs中未定义为falsey

时间:2013-10-20 15:51:59

标签: javascript node.js if-statement undefined

假设flag是未定义的变量。在浏览器中本地运行脚本时,我可以运行如下语句:

if(flag){
  //do stuff
}

这在浏览器中运行良好。但是在nodejs中,它会抛出一个错误,指出flag未定义。未定义在nodejs中不被认为是假的吗?

2 个答案:

答案 0 :(得分:1)

实际上,在浏览器中执行此操作 “很好”。 Chrome和Firefox会在其控制台中抛出相同的错误。

在JavaScript中,有两种类型的undefined:

  • undefined,执行此操作时:
    var flag;
  • 未定义的变量:
    if (flag) { ... }

第一个是假值,而第二个是错误(假设你当然没有声明它)。

答案 1 :(得分:1)

出于性能原因,我认为Node.js的执行方式类似于strict mode。这意味着您不能使用未声明的变量。

你可以做些什么来解决这个问题,检查类型,然后关闭它。例如:

if (typeof flag != 'undefined' && flag) {
    // do something
}

这将检查类型,如果未定义,则仅尝试使用flag变量。