Fdream's Blog
专注于WEB前端开发
Powered by Google

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

12 晴天 2009-2
Fdream 发表于 Ajax Web, 已被阅读 657 次, 评论 0 条
关键词:javascript ajax
[ 阅读字体大小: ]

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

Related articles 您可能对这些文章也感兴趣:
Related comments 与该文相关的评论:(我也想说几句)
Add a comment 我来说两句: 
禁止表情
禁止UBB
禁止图片
识别链接
识别关键字
表  情
arrow
用户名:   密码:  (匿名可不写) 同时注册?
验证码:   看不清?换个图片  看不清楚?换个图片

 
Copyright © 2005-2008,Fdream All Rights Reserved
Processed in 0.1249984 second(s) , unknow queries
Powered by OWord V0.1, Even Not Alpha
(此博客程序为半成品,请勿索取,以免给您的心灵造成创伤^_^)
鄂ICP备05026031号