原文:
译文:
译者:
此文是 系列的第三篇。
让我们先看一个简单的例子: 由于一般的等于符号 ==、!=经常会出现问题,以至于我们不得不使用严格等于(===、!==)。 当然有人说这些规则也有例外,我不同意这个观点。 怀揣的这个问题,我们现在就来看一下这个奇怪的现象:== 是不必要。
这个“正常”的等号(==)有很多怪癖。 虽然他很宽容(非严格比较),当与真值或者假值比较时,它会忽略类型(详见):
> 0 == false // OKtrue> 1 == true // OKtrue> 2 == true // not OKfalse> '' == false // OKtrue> '1' == true // OKtrue> '2' == true // not OKfalse
除了这些,我们设置可以把那些明显不能比较的值进行比较(我勒个去~~比较的结果居然还是 true):
> '' == 0true> '\n 123 \t' == 123true
最后一次比较返回是 true,因为在 javascript 中把字符串转换数字类型时,会过滤掉首尾空白字符。 如果你仍然对关于 == 怎么工作感兴趣,你可以读读。 对于严格比较符(===),不同类型的值比较是不相等的 。也就是说试用严格比较符号,上诉的问题都不复存在。