我在节点js脚本中遇到三元运算符比较的问题。 我有
function zip(fileName) {...}
process.env.TESTING = false;
zip(`${file}_${process.env.TESTING ? 'dev' : 'prod'}.zip`)
但无论process.env.TESTING值
,fileName总是file_dev.zipconsole.log(process.env.TESTING); // false
console.log(process.env.TESTING ? 'dev' : 'prod'); // always 'dev'
为什么值为boolean false
,但比较结果始终为true
?
但浏览器控制台按预期工作
答案 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'