假设flag
是未定义的变量。在浏览器中本地运行脚本时,我可以运行如下语句:
if(flag){
//do stuff
}
这在浏览器中运行良好。但是在nodejs中,它会抛出一个错误,指出flag
未定义。未定义在nodejs中不被认为是假的吗?
答案 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
变量。