File tree Expand file tree Collapse file tree 1 file changed +10
-3
lines changed Expand file tree Collapse file tree 1 file changed +10
-3
lines changed Original file line number Diff line number Diff line change @@ -227,7 +227,7 @@ v1 === v2 // true
227
227
1 === 1.0
228
228
```
229
229
230
- 比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。类型转换规则如下 。
230
+ 比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。下面分成四种情况,讨论不同类型的值互相比较的规则 。
231
231
232
232
** (1)原始类型值**
233
233
@@ -273,17 +273,24 @@ v1 === v2 // true
273
273
对象(这里指广义的对象,包括数组和函数)与原始类型的值比较时,对象转换成原始类型的值,再进行比较。
274
274
275
275
``` javascript
276
+ // 对象与数值比较时,对象转为数值
276
277
[1 ] == 1 // true
277
278
// 等同于 Number([1]) == 1
278
279
280
+ // 对象与字符串比较时,对象转为字符串
279
281
[1 ] == ' 1' // true
280
- // 等同于 Number([1]) == Number('1')
282
+ // 等同于 String([1]) == '1'
283
+ [1 , 2 ] == ' 1,2' // true
284
+ // 等同于 String([1, 2]) == '1,2'
281
285
286
+ // 对象与布尔值比较时,两边都转为数值
282
287
[1 ] == true // true
283
288
// 等同于 Number([1]) == Number(true)
289
+ [2 ] == true // false
290
+ // 等同于 Number([2]) == Number(true)
284
291
```
285
292
286
- 上面代码中,数组` [1] ` 与数值进行比较,会先转成数值,再进行比较;与字符串进行比较,会先转成数值,再与字符串进行比较,然后字符串也会转成数值 ;与布尔值进行比较,两个运算子都会先转成数值,然后再进行比较 。
293
+ 上面代码中,数组` [1] ` 与数值进行比较,会先转成数值,再进行比较;与字符串进行比较,会先转成字符串,再进行比较 ;与布尔值进行比较,对象和布尔值都会先转成数值,再进行比较 。
287
294
288
295
** (3)undefined 和 null**
289
296
You can’t perform that action at this time.
0 commit comments