JavaScript奇怪的比较——隐式类型转换

Posted on February 12, 2009 by Fdream

我们先看一下JavaScript中关系运算符的类型转换规则:

关系运算符(<、>、<=、>=)

  • 试图将 expression1 和 expression2 都转换为数字。
  • 如果两表达式均为字符串,则按字典序进行字符串比较。
  • 如果其中一个表达式为 NaN,返回 false。
  • 负零等于正零。
  • 负无穷小于包括其本身在内的任何数。
  • 正无穷大于包括其本身在内的任何数。

所以很容易理解下面这样的比较:

1 < NaN: false
1 >= NaN: false

'a' < 1: false
'a' >= 1: false

但是下面的就很诡异了:

1 < '2a': false
1 >= '2a': false
'2a' < 1: false
'2a' >= 1: false

按照一般的理解,这里的’2a’应该会被转换成2,可是实际上是被转换成了NaN,why?字符串转换为数字,有parseInt()、parseFloat()和Number(),在这里使用的就是Number转换。在用Number()进行转换时,’2a’是不能被转换成数字的。

分享 |
Categories:
Ajax Web
Tags:
,
Comments:
Leave a comment
Views:
1,284 Views

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>