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
投稿

猜你喜欢

  • MYSQL大表加索引的实现

    2024-01-16 03:12:36
  • 防注入asp过滤sql特殊字符函数

    2007-10-23 17:50:00
  • Python中的三目(元)运算符详解

    2023-12-06 01:20:49
  • 使用Python对Access读写操作

    2021-01-07 04:20:36
  • MySQL 数据库锁的实现

    2024-01-13 01:30:29
  • python GUI库图形界面开发之PyQt5图片显示控件QPixmap详细使用方法与实例

    2023-05-31 17:41:29
  • 一列保存多个ID(将多个用逗号隔开的ID转换成用逗号隔开的名称)

    2012-08-21 10:37:37
  • Python单链表的简单实现方法

    2021-08-14 01:58:33
  • ASP,PHP与.NET伪造HTTP-REFERER方法及防止伪造REFERER的方法

    2010-03-12 12:40:00
  • Pandas对每个分组应用apply函数的实现

    2022-01-26 04:02:00
  • javascript中var与let、const的区别详解

    2024-05-09 15:07:32
  • python3 tkinter实现添加图片和文本

    2022-08-07 04:28:17
  • 一文详解前端进阶之IntersectionObserver

    2024-05-03 15:07:48
  • Python实现利用最大公约数求三个正整数的最小公倍数示例

    2022-12-30 09:04:16
  • SQLServer地址搜索性能优化

    2024-01-14 10:48:42
  • python类别数据数字化LabelEncoder VS OneHotEncoder区别

    2023-10-12 07:46:46
  • 快速掌握和使用Flyway的详细教程

    2023-03-05 15:24:24
  • python实战之德州扑克第二步-判断牌型

    2021-03-19 12:37:28
  • Python淘宝秒杀的脚本实现

    2022-12-08 01:46:21
  • Python将脚本程序转变为可执行程序的实现

    2022-03-02 16:30:49
  • asp之家 网络编程 m.aspxhome.com