2017-08-08 103 views
0

我在节点js脚本中有三元运算符比较的问题。 我节点js三元运算符为什么比较出错?

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

但文件名总是file_dev.zip无论process.env.TESTING价值

console.log(process.env.TESTING); // false 
console.log(process.env.TESTING ? 'dev' : 'prod'); // always 'dev' 

为什么值boolean false但comparsion结果总是true

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

+1

它是“假”还是“假”...... ?! – deceze

+0

'process.env'将始终包含字符串。而不是'false'你有''false''(=一个字符串)。 – marvinhagemeister

回答

1
process.env.VARIABLE 

总是存储值作为字符串,所以false'false'和NOT布尔false

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

'!!'false''也是'true' ... – deceze

+0

那么我想你应该使用=='false' –

1

如果此值来自于环境,会不会它的价值是'false'?你可以用console.log(typeof process.env.TESTING)确认它是一个布尔值吗?

如果它原来是一个字符串,你应该重写比较作为process.env.TESTING == 'false' ? 'prod' : 'dev'