2
我正在评估在今天控制台的东西,当我输入,并成为好奇以下是瞎搞:傻JS比较
1 === 1 === 1
评估为false
但
1 == 1 == 1
评估为true
是第一次比较试图评估整体的1 === 1
类型?
什么是这种现象的原因?
我正在评估在今天控制台的东西,当我输入,并成为好奇以下是瞎搞:傻JS比较
1 === 1 === 1
评估为false
但
1 == 1 == 1
评估为true
是第一次比较试图评估整体的1 === 1
类型?
什么是这种现象的原因?
简单的答案是,==
尝试类型转换而===
没有。
的两个实施例中评价的顺序是相同的,并且是这样的:
(1 === 1) === 1
(1 == 1) == 1
所以第==
或===
比较完成,其结果被用作操作数的第二==
或===
。就像这样:
(1 === 1) === 1
// v v
(true) === 1
(1 == 1) == 1
// v v
(true) == 1
所以你可以看到,我们现在真的在谈论:
true === 1
与
true == 1
所以不同的结果,从这样一个事实正如我上面提到,该===
不会尝试转换任何类型,而==
会尝试将它们转换为匹配的类型。
所以无需转换,则显然true === 1
将是false
因为他们是不一样的价值,但在true == 1
的情况下,true
被转换为数字,和值true
的数字转换始终最终成为数1
,所以现在这样:
true == 1
被转换成这样的:
1 == 1
这是清楚没错。
,所以该完整演练是这样的:
(1 == 1) == 1
// v v
(true) == 1
// v v
1 == 1
第1'说1 =布尔值true,但 第二转换Boolean如果1 – MatthewMartin 2014-12-05 15:48:21
[1 === 1 === 1 => true === 1 => false]和[x = true; X == 1 =>真] http://www.w3schools.com/js/js_comparisons.asp – SilentTremor 2014-12-05 16:08:27
肯定,这是很有意义的。这也意味着'0 == 0 == 1'将是真实的,以及随后。 – 2014-12-05 16:11:08