From a1697a29bc8e155f465dedb92bbdaf98dfa41182 Mon Sep 17 00:00:00 2001 From: HoLoveSalt Date: Mon, 3 Sep 2018 23:03:20 +0800 Subject: [PATCH] =?UTF-8?q?[=E5=AF=B9=E8=B1=A1=E4=B8=8E=E5=8E=9F=E5=A7=8B?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E5=80=BC=E6=AF=94=E8=BE=83]=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 在对象与原始类型值比较中所有都是转化为数值后再进行比较,这与实际情况不同,个人认为是对象转化为原始类型后,再按照原始类型的比较规则进行比较 如 [1, 2] == '1,2' // true 如果转化为数值,Number([1, 2]) 值为 NaN,结果应该为 false --- docs/operators/comparison.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/docs/operators/comparison.md b/docs/operators/comparison.md index 17d7ad1..6c76ecd 100644 --- a/docs/operators/comparison.md +++ b/docs/operators/comparison.md @@ -274,16 +274,19 @@ v1 === v2 // true ```javascript [1] == 1 // true -// 等同于 Number([1]) == 1 +// 等同于 Number([1].toString()) == 1 [1] == '1' // true -// 等同于 Number([1]) == Number('1') +// 等同于 [1].toString() == '1' + +[1, 2] == '1,2' // true +// 等同于 [1].toString() == '1' [1] == true // true -// 等同于 Number([1]) == Number(true) +// 等同于 Number([1].toString()) == Number(true) ``` -上面代码中,数组`[1]`与数值进行比较,会先转成数值,再进行比较;与字符串进行比较,会先转成数值,再与字符串进行比较,然后字符串也会转成数值;与布尔值进行比较,两个运算子都会先转成数值,然后再进行比较。 +上面代码中,数组`[1]`与数值进行比较,会先转成数值,再进行比较;与字符串进行比较,会先转成字符串,再与字符串进行比较,然后字符串也会转成数值;与布尔值进行比较,两个运算子都会先转成数值,然后再进行比较;总之,对象转化为原始类型后,再按照原始类型的比较规则进行比较。 **(3)undefined 和 null**