提问人:muhammad ingar 提问时间:11/15/2023 更新时间:11/15/2023 访问量:41
为什么使用 eval() 语句时未定义值
why do i get value not defined when using an eval() statment
问:
var count = 0
class node{
data;
leftchild;
rightchild;
constructor(data){
this.data = data;
}
addleftchild(value){
this.leftchild = value
}
addrightchild(value){
this.rightchild = value
}
///getter
get data(){
return this.data;
}
这是 im 使用的类
function addnode(num){
eval("let value = nod"+num+".data")
console.log(value)
当我调用这个函数时,我得到的输出是 tree.html:42 未捕获的 ReferenceError:值未定义 在 addnode 问题似乎是当我尝试记录值时,它是未定义的
答:
2赞
gog
11/15/2023
#1
Eval 代码就像在块(引用)中一样执行,因此这
eval("let value = nod"+num+".data")
console.log(value)
大致相同
{
let value = nod5.data
}
console.log(value) // error because 'value' didn't survive the block
您可以通过赋值给现有变量来解决此问题:
let value
eval("value = nod" + num + ".data")
或者将作业移到外面eval
let value = eval("nod" + num + ".data")
当然,这个问题仍然悬而未决,你是否首先需要这里。我想你在这里更需要一个数组,这样你就可以简单地使用动态变量来代替动态变量。eval
nod5
nodes[5]
评论
0赞
muhammad ingar
11/15/2023
谢谢,我想我应该实现一个数组,就像你事后所说的那样,但谢谢
下一个:计算字符串中的数学表达式
评论
let value = globalObject[num].data
let
eval
let value; eval("value = ...");
num
eval()