【发布时间】:2021-01-31 23:48:51
【问题描述】:
我知道要查找 javascript 中是否未声明变量,我可以使用if (typeof variable === 'undefined')。如果我将变量声明为未定义 (var variable = undefined),则 if 语句仍然返回 true。是否有可能在 JavaScript 中找到未声明的变量和值为 undefined 的变量之间的区别?我知道它们是相似的,但是做const variable = undefined 然后variable = "something else" 会抛出一个错误,所以它们一定是不同的。
const variable = undefined
if (typeof variable === 'undefined') {
console.log('"variable" is undefined')
}
if (typeof undeclaredVariable === 'undefined') {
console.log('"undeclaredVariable" is undefined')
}
我不想使用 try catch 块,因为我希望能够基于此分配另一个常量。我想要这样的解决方案:const isVariableDeclared = variable === undeclared,除了 undeclared 在 javascript 中不存在。我知道我可以将 let 与 try catch 块一起使用,但我正在寻找更优雅的东西。
【问题讨论】:
-
您的要求并不完全清楚。但是你在你的例子中调用
undefinedVariable更好地描述为未声明而不是未定义。从某种意义上说,你可以告诉这些,因为任何对它们的引用 except 用于typeof运算符都会抛出ReferenceError。 -
使用“try catch”来引用变量。我认为这是检查变量是否已声明的唯一方法。
-
没有,除了如果你使用一个除了赋值表达式或 typeof 运算符之外没有声明的变量,你的代码将不会运行,你会得到一个 ReferenceError。
-
从您展示的示例中,您的意思是未声明吗?
-
使用一个对象来定义它并检查对象内部是否有自己的属性,如果try catch不满足你,也许这是唯一的方法
标签: javascript undefined detection undeclared-identifier