网络编程
位置:首页>> 网络编程>> JavaScript>> JavaScript奇怪的比较——隐式类型转换

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

作者:Fdream 来源:Fdream博客 发布时间:2009-02-15 13:06:00 

标签:类型转换,JavaScript,运算符

我们先看一下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'是不能被转换成数字的。

0
投稿

猜你喜欢

手机版 网络编程 asp之家 www.aspxhome.com