JavaScript 的怪癖 3:标准的等号 (==)
原文:JavaScript quirk 3: normal equality (==)
译文:JavaScript 的怪癖 3:标准的等号 (==)
译者:iranw
此文是 javascript 的 12 个怪癖(quirks) 系列的第三篇。
让我们先看一个简单的例子: 由于一般的等于符号 ==、!=经常会出现问题,以至于我们不得不使用严格等于(===、!==)。 当然有人说这些规则也有例外,我不同意这个观点[2]。 怀揣的这个问题,我们现在就来看一下这个奇怪的现象:== 是不必要。
这个“正常”的等号(==)有很多怪癖。 虽然他很宽容(非严格比较),当与真值或者假值比较时,它会忽略类型(详见怪癖1):
> 0 == false // OK true > 1 == true // OK true > 2 == true // not OK false > '' == false // OK true > '1' == true // OK true > '2' == true // not OK false
除了这些,我们设置可以把那些明显不能比较的值进行比较(我勒个去~~比较的结果居然还是 true):
> '' == 0 true > '\n 123 \t' == 123 true
最后一次比较返回是 true,因为在 javascript 中把字符串转换数字类型时,会过滤掉首尾空白字符。 如果你仍然对关于 == 怎么工作感兴趣,你可以读读这篇文章。 对于严格比较符(===),不同类型的值比较是不相等的 [1]。也就是说试用严格比较符号,上诉的问题都不复存在。
参考文献:
相关推荐
周公周金桥 2020-09-06
大象从不倒下 2020-07-31
AlisaClass 2020-07-19
MaureenChen 2020-04-21
xingguanghai 2020-03-13
teresalxm 2020-02-18
木四小哥 2013-05-14
SoShellon 2013-06-01
Simagle 2013-05-31
羽化大刀Chrome 2013-05-31
waterv 2020-01-08
LutosX 2013-07-29
vanturman 2013-06-27
wutongyuq 2013-04-12
luoqu 2013-04-10
zjuwangleicn 2020-09-04
hellowzm 2020-08-18