我正在通過將「truthy」布爾值傳遞給函數來在腳本中設置模式。在函數中,簡單的if
語句檢查參數是否爲true
或false
。我有時把它作爲一個字符串或一貫致力於一個布爾值,但由於某些原因,它是不是這樣的:JavaScript IF語句boolean strict
setMode: function(Setting) {
if (Setting) {
console.log('Enabling mode');
} else {
console.log('Disabling mode');
}
}
例如,當我將它傳遞一個字符串'false'
和日誌Setting
安慰,控制檯說false
,但if
聲明認爲這是真的。
我必須把它添加到函數的開始,它的工作:
如果(typeof運算設置==「串」){ 設置=(設置==「真」); }
在使用它的一個例子:
var inverted = $('INPUT[name="Mode"]').prop('checked');
app.setMode(inverted);
和另:
var mode = localStorage.getItem('Mode');
this.setMode(mode);
它是如此奇怪的,因爲我已經做這種類型的事情了多年但它現在纔開始。也許因爲我正在使用localStorage
和.prop
?
'localStorage'只能存儲字符串。我建議訪問LS始終用JSON.parse/stringify對包裝。 –
重要嗎?如果它是一個字符串或一個布爾值,一個'if'語句仍然會將其視爲'true'或'false',但它不是這種情況。 – Jared
此外,我也嘗試使用複選框,結果相同。 – Jared