为什么我不能将NODE_ENV设置为undefined?

我试图通过改变和testingvariablesNODE_ENV的值来实现一个testing,让我的代码在不同的Node.js环境中正常工作。

我所坚持的是,试图理解为什么下面的代码:

 process.env.NODE_ENV = undefined; var test = process.env.NODE_ENV || 'empty'; console.log(test); 

输出undefined而不是empty

这是一些JavaScript或Node.jsfunction,我在这里失踪?

在Node.js版本下testing:0.10.47,4.6.1和6.9.1


更新

作为这个具体情况的解决办法,我不得不做以下几点:

 delete process.env.NODE_ENV; // now it is undefined 

这是非常微妙的:根据文件 :

在process.env上分配一个属性会隐式地把值转换成一个string。

所以你从process.env.NODE_ENV回来"undefined" ,而不是undefined"undefined"是truthy,所以"undefined" || "empty" "undefined" || "empty""undefined"

你可以看到,如果你修改你的脚本有点:

 'use strict'; process.env.NODE_ENV = undefined; console.log("process.env.NODE_ENV", typeof process.env.NODE_ENV, process.env.NODE_ENV); var test = process.env.NODE_ENV || 'empty'; console.log("test", typeof test, test); console.log("process.env.NODE_ENV", typeof process.env.NODE_ENV, process.env.NODE_ENV); 

…输出:

 process.env.NODE_ENVstring未定义
testingstring未定义
 process.env.NODE_ENVstring未定义