JavaScript 中如何判断变量是否存在

发布时间:2023-05-23

一、使用 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 属性不存在