Подтвердить что ты не робот

Почему я не могу установить NODE_ENV на undefined?

Я пытаюсь выполнить тест, где мой код работает правильно в разных средах Node.js, путем изменения и тестирования значения переменной NODE_ENV.

То, что я застрял, пытается понять, почему следующий код:

process.env.NODE_ENV = undefined;

var test = process.env.NODE_ENV || 'empty';

console.log(test);

выводит undefined вместо empty.

Это какая-то функция JavaScript или Node.js, которую я здесь отсутствует?

Протестировано в версиях Node.js: 0.10.47, 4.6.1 и 6.9.1


Обновление

Как работа для этого конкретного случая, я должен был сделать следующее:

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

Ответ 1

Он очень тонкий: согласно документация:

Присвоение свойства process.env неявно преобразует значение в строку.

Итак, вы возвращаетесь "undefined" из process.env.NODE_ENV, а не undefined. "undefined" является правдивым, поэтому "undefined" || "empty" - "undefined".

Вы можете видеть, что если вы немного измените свой script:

'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_ENV string undefined
test string undefined
process.env.NODE_ENV string undefined