节点js三元运算符为什么比较出错?

时间:2017-08-08 08:52:57

标签: javascript node.js boolean ternary-operator

我在节点js脚本中遇到三元运算符比较的问题。 我有

function zip(fileName) {...}
process.env.TESTING = false;
zip(`${file}_${process.env.TESTING ? 'dev' : 'prod'}.zip`)

但无论process.env.TESTING值

,fileName总是file_dev.zip
console.log(process.env.TESTING); // false
console.log(process.env.TESTING ? 'dev' : 'prod'); // always 'dev'

为什么值为boolean false,但比较结果始终为true

但浏览器控制台按预期工作

2 个答案:

答案 0 :(得分:1)

如果此值来自环境,则其值为字符串 'false'?你可以用console.log(typeof process.env.TESTING)确认它是布尔值吗?

如果结果是字符串,则应将比较重写为process.env.TESTING == 'false' ? 'prod' : 'dev'

答案 1 :(得分:1)

  process.env.VARIABLE

始终将值存储为字符串,因此false将为'false'而不是布尔值false

process.env.VARIABLE === 'false'? 'prod':'dev'