在 NodeJS 中未定义为 falsey

undefined as falsey in nodejs

本文关键字:falsey 未定义 NodeJS      更新时间:2023-09-26

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

if(flag){
  //do stuff
}

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

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

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

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

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

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

要解决此问题,您可以做的是检查类型,然后关闭它。例如:

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

这将检查类型,并且仅在未定义flag变量时才尝试使用。