Javascript 在nodejs中未定义为false

Javascript 在nodejs中未定义为false,javascript,node.js,if-statement,undefined,Javascript,Node.js,If Statement,Undefined,假设标志是一个未定义的变量。在浏览器中本地运行脚本时,我可以运行类似以下的IF语句: if(flag){ //do stuff } 这在浏览器中运行良好。然而,在nodejs中,它抛出一个错误,表示标志未定义。在nodejs中未定义不被认为是错误的吗 实际上,在浏览器中这样做并不“好”。Chrome和Firefox在其控制台中抛出相同的错误 在JavaScript中,有两种未定义的类型: 执行此操作时,未定义的值: var标志 未定义的变量: if(flag){…} 第一个是错误值,第

假设
标志
是一个未定义的变量。在浏览器中本地运行脚本时,我可以运行类似以下的IF语句:

if(flag){
  //do stuff
}
这在浏览器中运行良好。然而,在nodejs中,它抛出一个错误,表示
标志
未定义。在nodejs中未定义不被认为是错误的吗

实际上,在浏览器中这样做并不“好”。Chrome和Firefox在其控制台中抛出相同的错误

在JavaScript中,有两种未定义的类型:

  • 执行此操作时,
    未定义的值:
    var标志
  • 未定义的变量:
    if(flag){…}

第一个是错误值,第二个是错误值(当然,假设您从未声明过它)。

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

你能做的就是检查类型,然后离开。例如:

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

这将检查类型,只有在未定义
标志时才尝试使用
变量

NodeJS对使用以前没有声明过的变量更为严格,变量本身是否未声明(未定义),或者变量的值是否未定义?这似乎很奇怪。我想知道,在这个意义上,他们是在试图保护我不犯什么样的错误,因为变量是未声明的。