值的比较(大于 等于 小于 不等于)

大于 / 小于:a > ba < b

大于等于 / 小于等于:a >= ba <= b

检查两个值的相等:a == b,请注意双等号 == 表示相等性检查,而单等号 a = b 表示赋值。

检查两个值不相等:不相等在数学中的符号是 ,但在 JavaScript 中写成 a != b

1字符串比较

字符串是按字符(母)逐个进行比较的。

alert( 'Z' > 'A' ); // true

alert( 'Glow' > 'Glee' ); // true

alert( 'Bee' > 'Be' ); // true

2 不同类型比较

当对不同类型的值进行比较时,JavaScript 会首先将其转化为数字(number)再判定大小。

1 alert( '2' > 1 ); // true,字符串 '2' 会被转化为数字

2 alert( '01' == 1 ); // true,字符串 '01' 会被转化为数字 1

alert( true == 1 ); // true

alert( false == 0 ); // true

普通的相等性检查 == 存在一个问题,它不能区分出 0 和 false

alert( 0 == false ); // true

无法区分空字符串和 false

alert( '' == false ); // true

这是因为在比较不同类型的值时,处于相等判断符号 == 两侧的值会先被转化为数字。空字符串和 false 也是如此,转化后它们都为数字 0。

严格相等运算符 ===(三等) 在进行比较时不会做任何的类型转换。

alert( null === undefined ); // false

alert( null == undefined ); // true

当使用数学式或其他比较方法 < > <= >= 时:

null/undefined 会被转化为数字:null 被转化为 0undefined 被转化为 NaN

下面让我们看看,这些规则会带来什么有趣的现象。同时更重要的是,我们需要从中学会如何远离这些特性带来的“陷阱”。

undefined 不应该被与其他值进行比较:

alert( undefined > 0 ); // false

 alert( undefined < 0 ); // false

alert( undefined == 0 ); // false (3)

(1) 和 (2) 都返回 false 是因为 undefined 在比较中被转换为了 NaN,而 NaN 是一个特殊的数值型值,它与任何值进行比较都会返回 false

(3) 返回 false 是因为这是一个相等性检查,而 undefined 只与 null 相等,不会与其他值相等。

除了严格相等 === 外,其他但凡是有 undefined/null 参与的比较,我们都需要格外小心。

除非你非常清楚自己在做什么,否则永远不要使用 >= > < <= 去比较一个可能为 null/undefined 的变量。对于取值可能是 null/undefined 的变量,请按需要分别检查它的取值情况。

比较运算符始终返回布尔值。

字符串的比较,会按照“词典”顺序逐字符地比较大小。

当对不同类型的值进行比较时,它们会先被转化为数字(不包括严格相等检查)再进行比较。

在非严格相等 == 下,null 和 undefined 相等且各自不等于任何其他的值。

在使用 > 或 < 进行比较时,需要注意变量可能为 null/undefined 的情况。比较好的方法是单独检查变量是否等于 null/undefined

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值