Skip to content

Commit e70963e

Browse files
committed
docs(operator): fix equality operator
1 parent 02c1074 commit e70963e

File tree

1 file changed

+10
-3
lines changed

1 file changed

+10
-3
lines changed

docs/operators/comparison.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ v1 === v2 // true
227227
1 === 1.0
228228
```
229229

230-
比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。类型转换规则如下
230+
比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。下面分成四种情况,讨论不同类型的值互相比较的规则
231231

232232
**(1)原始类型值**
233233

@@ -273,17 +273,24 @@ v1 === v2 // true
273273
对象(这里指广义的对象,包括数组和函数)与原始类型的值比较时,对象转换成原始类型的值,再进行比较。
274274

275275
```javascript
276+
// 对象与数值比较时,对象转为数值
276277
[1] == 1 // true
277278
// 等同于 Number([1]) == 1
278279

280+
// 对象与字符串比较时,对象转为字符串
279281
[1] == '1' // true
280-
// 等同于 Number([1]) == Number('1')
282+
// 等同于 String([1]) == '1'
283+
[1, 2] == '1,2' // true
284+
// 等同于 String([1, 2]) == '1,2'
281285

286+
// 对象与布尔值比较时,两边都转为数值
282287
[1] == true // true
283288
// 等同于 Number([1]) == Number(true)
289+
[2] == true // false
290+
// 等同于 Number([2]) == Number(true)
284291
```
285292

286-
上面代码中,数组`[1]`与数值进行比较,会先转成数值,再进行比较;与字符串进行比较,会先转成数值,再与字符串进行比较,然后字符串也会转成数值;与布尔值进行比较,两个运算子都会先转成数值,然后再进行比较
293+
上面代码中,数组`[1]`与数值进行比较,会先转成数值,再进行比较;与字符串进行比较,会先转成字符串,再进行比较;与布尔值进行比较,对象和布尔值都会先转成数值,再进行比较
287294

288295
**(3)undefined 和 null**
289296

0 commit comments

Comments
 (0)