判断条件
我们经常会直接用表达式和变量转换成 Boolean 数据类型来当作判断条件
// 判断 obj 是否有属性 b, 如果存在,做啥啥啥
const obj = {
a: "1",
}
// 首先,会想当然会这么写.....
if(obj.b) { // 结果是 false,但是 obj 有属性 b
// do something
}
但是但是!
// 如果 b 是空字符串
const obj = {
a: "1",
b: ""
}
// 前面的判断会有问题
因为 if 语句中,0、空字符串、null、undefined 在转换时都会返回 false
// 正确的判断方式
if(typeof obj.b !== "undefined") {
// do something
}
为什么不这样写呢?
// 正确的判断方式
if(obj.b !== undefined) {
// do something
}
如果仅仅是实现前面的目标,那没有什么问题,但是如果是直接判断一个变量,如果变量没有定义就会报错,不利于代码的健壮性
if(x === undefined) {
// do something
}
// 如果 x 未定义,会报错: “ReferenceError: x is not defined”
所以养成好习惯,用 typeof 来判断 undefined 这个基本类型吧