Ответ 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