JS面试题大坑之隐式类型转换实例代码(2)

//大坑 console.log ( [] == 0 );//true console.log ( ! [] == 0 );//true //神坑 console.log ( [] == ! [] );//true console.log ( [] == [] );//false //史诗级坑 console.log({} == !{});//false console.log({} == {});//false

• 原理分析

/*1.关系运算符:将其他数据类型转成数字 2.逻辑非:将其他数据类型使用Boolean()转成布尔类型 * 以下八种情况转换为布尔类型会得到false * 0 、-0、NaN、undefined、null、''(空字符串)、false、document.all() * 除以上八种情况之外所有数据都会得到true */ /*原理 (1)[].valueOf().toString() 得到空字符串 (2)Number('') == 0 成立 */ console.log ( [] == 0 );//true /* 原理 :本质是 `![]` 逻辑非表达式结果 与 0 比较关系 (1)逻辑非优先级高于关系运算符 ![] = false (空数组转布尔得到true,然后取反得到false) (2)false == 0 成立 */ console.log ( ! [] == 0 );//true /*原理 :本质其实是 `空对象{}` 与 `!{}` 这个逻辑非表达式结果做比较 (1) {}.valueOf().toString() 得到字符串 '[object Object]' (2) !{} = false (3) Number('[object Object]') == Number(false) */ console.log({} == !{});//false //引用类型数据存在堆中,栈中存储的是地址,所以他们的结果是false console.log({} == {});//false /*原理:本质是 `空数组[]` 与 `![]` 这个逻辑非表达式结果做比较 (1) [].valueOf().toString() 得到空字符串 '' (2) ![] = false (3) Number('') == Number(false) 成立 都是0 */ console.log ( [] == ! [] );//true //引用类型数据存在堆中,栈中存储的是地址,所以他们的结果是false console.log ( [] == [] );//false console.log ( {}.valueOf ().toString () )//[object Object] console.log ( [].valueOf ().toString () );//'' 空字符串

js面试题大坑——隐式类型转换

js面试题大坑——隐式类型转换

js面试题大坑——隐式类型转换

总结

以上所述是小编给大家介绍的JS面试题大坑之隐式类型转换实例代码,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/a8771d134d73403868528c40b57d7657.html