2016-08-17 35 views
0

我今天遇到了一個奇怪的問題,我想知道爲什麼會發生這種情況......我的印象是,在JavaScript中,任何不明顯爲false(false,0或NULL)的東西都會返回true。爲什麼這些評估方式不一樣?

將console.log()附加到示例1中的isNative和示例2中的localStorage.getItem(app +「.native_context」)時,兩者都返回「false」。但是,在實際運行這些示例時,示例1在兩種情況下都可以工作,但無論如何,示例2都會返回true,從而給我留下所有被接受爲真的印象。

例1:

var isNative = localStorage.getItem(app + ".native_context"); 
if (isNative === "true") { 
     //do x 
    } else { 
     //do y 
    } 
} 

例2:

if (localStorage.getItem(app + ".native_context")) { 
     //do x 
    } else { 
     //do y 
    } 
} 

任何人能解釋發生了什麼事?我很想知道。

+4

如果它包含一個字符串' 「假」'那麼它是一個非空字符串,它是真實的。 – JJJ

+3

字符串不是布爾值。 –

+0

我們不知道'localStorage.getItem(app +「.native_context」)'的結果是什麼。顯然這不是字符串「真」。 – colecmc

回答

3

大部分字符串是「truthy」值:

if('false') { 
 
    alert('A string is usually truthy!'); 
 
}

+0

我在不同的文件中複製代碼,所以我甚至沒有注意到表示字符串的引號,oops – Vemonus

相關問題