【发布时间】:2021-10-27 08:30:24
【问题描述】:
有很多信息可以检查 JavaScript 中的“未定义”正常变量,但我需要检查 eval(var),例如:
var Hello_0 = "Hello 0 !";
console.log(" Hello_0 is: " + eval("Hello_"+0));
var dinamyc_var = "Hello_"+1;
//None of the next conditionals is triggered///
if (eval(dinamyc_var) === undefined) {
console.log(" dinamyc_var is undefined ");
}
if (eval(dinamyc_var) === null) {
console.log(" dinamyc_var is null ");
}
if ( typeof eval(created_node) === undefined ) {
console.log(" dinamyc_var is typeof undefined ");
}
if ( typeof eval(created_node) === null ) {
console.log(" dinamyc_var is typeof null ");
}
console.log(" dinamyc_var is: " + eval(dinamyc_var));
https://jsfiddle.net/mczdrv5t/
控制台显示 eval("Hello_"+0) 的值,因为已声明,但是当尝试调用未声明的 eval("Hello_"+1) 时,控制台显示下一个错误。我需要处理可能的未声明变量。
未捕获的 ReferenceError: Hello_1 未定义 在 eval (eval at ....
【问题讨论】:
-
实际上,您永远不需要 — 或想要,真的是 — 动态变量名。改用一个简单的对象:
const obj = { Hello_0: "Hello 0 !" };...console.log(obj["Hello_" + 0]); console.log(obj.hasOwnProperty("Hello_" + 1));等,或者,对于索引结构,一个数组。见"Variable" variables in JavaScript。使用eval和必要的try–catch,只会让每个人的生活变得不必要地艰难,包括你自己的。 -
[题外话]:
dinamyc实际上拼写为dynamic
标签: javascript