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

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

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

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

猜你喜欢

  • 小白讲座:在win下mysql备份恢复命令概括

    2009-09-05 09:43:00
  • 闲聊html和body标签

    2009-02-21 10:50:00
  • SQL Server各种日期计算方法

    2008-09-11 21:47:00
  • asp 动态生成rss(不成生xml文件)代码

    2011-04-04 11:17:00
  • 妙用Dreamweaver MX共享WPS Office文件

    2010-09-05 21:18:00
  • mysql 忘记root密码

    2010-12-14 14:50:00
  • 彻底解决MySql在UTF8字符集下乱码问题

    2011-06-02 12:02:00
  • 符合网站标准的图片切换代码(天极软件)

    2008-02-20 08:23:00
  • web脚本程序攻击的防范

    2007-10-18 13:29:00
  • 如何实现文件上传并自动归类功能?

    2010-05-24 18:37:00
  • 利用SQL语句对不同数据库进行高效果分页

    2008-11-28 14:44:00
  • CSS处理斜角导航条的一个例子

    2007-08-27 12:38:00
  • MySQL 视图,第1349号错误

    2008-05-18 13:04:00
  • ASP幻灯片

    2009-09-04 18:05:00
  • 是时候不用考虑基于字体大小(em)的设计了

    2009-10-24 13:25:00
  • 如何调用SQL Server的存储过程?

    2009-11-15 20:15:00
  • jQuery实现同一点击,两个不同链接,指向两个不同的iframe

    2010-06-21 10:52:00
  • 在线Ajax载入动画生成工具 - Loadinfo

    2008-02-18 13:34:00
  • 做了CDN加速的ASP网站获取用户真实IP程序

    2011-02-16 10:59:00
  • 一个较复杂的字符串截取函数

    2009-11-02 10:45:00
  • asp之家 网络编程 m.aspxhome.com