变量计算的坑--(类型转换)
拼接字符串
console.log(10 + 1); //11
console.log('10' + 1); //101 数字1 => 字符串'1'
console.log(true + 1); //2 布尔值true=>数字型1
console.log(true + '1'); //true1 布尔值true=>字符串'true'
== 问题
"=="和"===" 的比较规则
==
- 先检查两个操作数的数据类型是否相同
- 如果相同,则比较两个数是否相等
- 如果不同,则先将两个数转换为相同数据类型,再进行比较
===
- 先检查两个操作数的数据类型是否相同
- 如果相同,则比较两个数是否相等
- 如果不同,返回 false
console.log(10 == '10') //true
console.log(0 == ''); //true
console.log(0 == false);//true
console.log('' == false);//true
console.log(null == undefined);//true
console.log(NaN == NaN); //false
console.log(null == false);//⭐true
//实际开发中用到==的情况
const obj = { a: 1 }
//因为null==undefined,这样就可简写obj.b==null||obj.b==undefined
if (obj.b == null) console.log(1) //1