一、使用 typeof 运算符判断
1、typeof
运算符是用于判断一个变量的类型的。如果该变量存在,typeof
运算符会返回一个字符串,表示该变量的类型。如果该变量不存在,则会返回 "undefined"
。
var foo;
if (typeof foo !== "undefined") {
console.log("foo 已经声明");
} else {
console.log("foo 没有声明");
}
// 输出结果:foo 没有声明
2、typeof
运算符也可以用于判断一个对象的属性是否存在。例如,我们可以使用下面的代码来确保对象 person
中的 name
属性已经存在:
if (typeof person !== "undefined" && typeof person.name !== "undefined") {
console.log("person 的 name 属性已经存在");
} else {
console.log("person 的 name 属性不存在");
}
// 输出结果:person 的 name 属性不存在
二、使用变量判断
1、我们可以使用变量的真值来判断变量是否存在。在 JavaScript 中,有一些值是被认为是“假”(false)的,例如:false、0、空字符串、null、undefined 和 NaN。只要变量不是这些“假”值,它就可以被认为是存在的。
var foo;
if (foo) {
console.log("foo 已经声明");
} else {
console.log("foo 没有声明");
}
// 输出结果:foo 没有声明
2、如果我们要判断一个对象的属性是否存在,我们可以使用变量来判断。例如,下面的代码用来确保对象 person
中的 name
属性已经存在:
if (person && person.name) {
console.log("person 的 name 属性已经存在");
} else {
console.log("person 的 name 属性不存在");
}
// 输出结果:person 的 name 属性不存在
三、使用 in 运算符判断
1、in
运算符用于判断一个对象是否存在某个属性。如果该属性存在,in
运算符会返回 true
;否则返回 false
。例如,下面的代码用来判断对象 person
是否存在 name
属性:
if ("name" in person) {
console.log("person 的 name 属性已经存在");
} else {
console.log("person 的 name 属性不存在");
}
// 输出结果:person 的 name 属性不存在
2、同样的,我们也可以使用 in
运算符来确保一个对象中的属性链存在。例如,下面的代码用来判断对象 person
中的 address.city
属性是否存在:
if ("address" in person && "city" in person.address) {
console.log("person 的 address.city 属性已经存在");
} else {
console.log("person 的 address.city 属性不存在");
}
// 输出结果:person 的 address.city 属性不存在
四、使用 try...catch 语句判断
1、我们可以使用 try...catch
语句来判断变量是否存在。如果该变量不存在,try
代码块中的表达式会抛出一个错误,并被 catch
代码块中的捕获。我们可以在 catch
代码块中处理该错误,从而达到判断变量是否存在的目的。
try {
var foo = bar;
console.log("foo 存在");
} catch (e) {
console.log("foo 不存在");
}
// 输出结果:foo 不存在
2、同样的,我们也可以使用 try...catch
语句来判断一个对象的属性是否存在。例如,下面的代码用来确保对象 person
中的 name
属性已经存在:
var person = {};
try {
var name = person.name;
console.log("person 的 name 属性已经存在");
} catch (e) {
console.log("person 的 name 属性不存在");
}
// 输出结果:person 的 name 属性不存在