2016-08-02 27 views
1

我刚发现一段代码在其所比较的字符串到这样的整数:如何比较字符串和整数在JavaScript中工作?

var result = "text" > 127; 

和这行代码的结果是错误的。我也曾尝试将其更改为相等于或少于,结果还是假的:

var result = "text" === 127; 
var result = "text" < 127; 

什么是比较字符串和一些像这样的,如果它总是返回false,还是有什么意义情况何时会如此?

+0

它基于抽象的相等比较算法工作。我已经创建了一个[开源应用程序](https://laraprabhu.github.io/)来详细解释它。 –

+1

文档包含此内容。 http://stackoverflow.com/documentation/javascript/208/comparison-operations/2110/abstract-equality-inequality-and-type-conversion#t=201608021517406880455 –

+0

@RichardHamilton我刚刚意识到它是返回true,如果字符串是一个数字就像“3”== 3 – meJustAndrew

回答

1

当您比较字符串与数字字符串转换为数字,但在这种情况下,"text",结果是NaN(translate是不是数字)。总是导致错误,因为NaN不是要比较的数字。

验证这一点:

var n1 = Number("text"); 
console.log(n1); //show NaN 

所以......

var result = "text" > 127; 

是等于

var result = NaN > 127; //result false always with any compare 

但是,如果文本是一个数字可以转换

var result = "00999" > 127; //result true, because Number("00999") == 999 
+1

谢谢!这解释了为什么结果总是错误的。 – meJustAndrew