2011-10-24 64 views
0

我遇到了一些JavaScript代碼我不明白:JavaScript字符串和int

是什麼意思a < 5如果變量a持有字符串?

謝謝

+0

什麼的'了' – vol7ron

+0

ECMA規格爲JavaScript比較值http://bclary.com/2004/11/07/#a-11.9.3 – RHT

回答

3

如果a包含數字的字符串表示形式,JavaScript會將其隱式轉換爲數字並執行比較。

否則,它將返回false。

例如:

var a = 'foo'; 
(a < 5) // will be false 
(a > 5) // will be false 

a = '10'; 

(a < 5) // will be false 
(a > 5) // will be true 
+1

如果a爲null或未定義以及其他變體,請參閱ECMA規範中的JavaScript比較http://bclary.com/2004/11/07/#a-11.9.3 – RHT

+1

即使字符串不代表數字,它也會被轉換爲數字,例如在你的'var a ='foo''片段中,字符串''foo''被轉換爲'NaN',並且如果其中一個操作數是'NaN','false'總是結果。 – CMS

+0

不要忘記提及truthy vs true,如[我的答案](http://stackoverflow.com/questions/7883143/javascript-string-and-int/7883221#7883221)中所例舉的。 – vol7ron

0

由於JavaScript(偶爾是扭曲的)類型轉換規則,就好像它持有一個數字一樣。

也就是說,代碼依靠在那總是讓我有點抽搐;國際海事組織它手動轉換爲一個數字,因此它可以在更受控制的條件下進行理智檢查。

0
var a = '5'; 
a < 5; // false 
a > 5; // false 
a == 5; // true 
a === 5; // false <-- pay attention 


var a = 5; 
a < 5; // false 
a > 5; // false 
a == 5; // true 
a === 5; // true <-- pay attention 


var a = 'anythingelse'; 
a < 5; // false 
a > 5; // false 
a == 5; // false 
a === 5; // false