2011-10-24 93 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