javascript eval以一种方式工作,但不能以另一种方式工作,为什么?
我正在尝试使用eval函数进行动态赋值。我知道这是一种不好的做法,并修改了代码,不使用eval。尽管如此,我还是不明白为什么它以一种方式工作,而不是以另一种方式javascript eval以一种方式工作,但不能以另一种方式工作,为什么?,javascript,eval,Javascript,Eval,我正在尝试使用eval函数进行动态赋值。我知道这是一种不好的做法,并修改了代码,不使用eval。尽管如此,我还是不明白为什么它以一种方式工作,而不是以另一种方式 以下是有效的方法: onFilterChosen(filterEmited: string, kind: string) { eval("this.dbParams." + kind + " = filterEmited"); } 什么不起作用: onFilterChosen(fi
以下是有效的方法:
onFilterChosen(filterEmited: string, kind: string) {
eval("this.dbParams." + kind + " = filterEmited");
}
什么不起作用:
onFilterChosen(filterEmited: string, kind: string) {
eval("this.dbParams." + kind + " = " + filterEmited);
}
有人能告诉我第二种方法有什么问题吗?在第二个示例中,必须有一个变量的名称为filterEmited。让我们举个例子,我们调用函数:
onFilterChosen('filter', 'abc');
将导致在第一个示例中执行此JS:
this.dbParams.abc = filterEmited
这是有效的,因为该参数被称为filterEmited
。
而在第二个示例中,将执行以下操作:
this.dbParams.abc = filter;
由于没有变量“过滤器”,它可能会崩溃
顺便说一句,发射用两个t拼写 请提供一个。它可以双向工作,但在您的示例中传递给它的代码不同。感谢axiac&iota的响应。我理解利克尔的回答。哦,我太傻了。。。我已经研究这段代码很多天了,我下定决心,它只会以第一种方式工作,而不是第二种方式。。现在我知道我应该替换变量的值(就像我替换'kind')。谢谢你指出。。。我认为,这个问题不应该出现在StackOverflow上。而且。。。emitted应该用两个t拼写?我也会更正变量名。@TKtheLazyGuy我们都有这样的时间,你的问题被否决了,所以我认为它很好!