2017-08-08 45 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'