2014-01-07 151 views
1

是否所有非空字符串評估爲true?字符串到布爾轉換行爲

ECMAScript

Table 11 - ToBoolean Conversions 

Undefined: false 
Null: false 
Boolean: The result equals the input argument (no conversion). 
Number: The result is false if the argument is +0, -0, or NaN; otherwise the result is true. 
String: The result is false if the argument is the empty String (its length is zero); otherwise the result is true. 
Object: true 

答案應該是肯定的。但後來我不知道爲什麼:

alert(" " == false); 

回報真正。 {與"\t\n\r"}相同的結果}

我沒有任何特別的用例,我只是想知道它。

+3

見我的答案在這裏:http://stackoverflow.com/questions/10376179/n-t-r-0-is-true/10377034。 'false'被轉換爲'0'。 –

+0

@FelixKling thx,我搜索了,找不到它。 –

+0

好吧,我投票結束因爲重複的問題...;)會接受第一個答案。 Thx給大家。 –

回答

1

這是因爲JavaScript描述了只有空白字符串,因爲轉換爲0

您可以使用一元+運營商測試:

console.log(+"\t\n\r"); // 0 

因爲==是不作爲toBoolean轉換那麼簡單,因爲你想,如果你沒有,你沒有得到相同的結果!!"\t\n\r",其中至布爾型轉換將所有非空字符串視爲true

==與不同類型的操作數一起使用時,算法通常會使用,直到它們都是數字爲止。這就是爲什麼轉換爲轉換與此處相關的原因。

+0

@ A.Wolff:是的,這是一個只有空白字符串的例子。那些轉義序列只是字面語法的一部分。結果字符串將只有空白。 :-) –

+1

哎呀,明白了! –

1

空的或僅包含空白的StringNumericLiteral轉換爲+0。

參見第44頁的PDF您鏈接

+0

該死的,thx!第44頁,注意到 –

+0

http://stackoverflow.com/questions/4216362/javascript-white-space-string-boolean-conversion獲得更詳細的答案 – Mirco

+0

我只能接受一個答案,但猜你知道那個:( –