javascript eval一种方法起作用,而另一种方法不起作用,为什么?

懒惰的人

我正在尝试使用eval函数进行动态分配。我知道这是不好的做法,并且已经修改了代码以不使用eval。不过,我不明白为什么它会以一种方式起作用,而不能以另一种方式起作用。


这是起作用的:
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!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么一种功能有效而另一种不起作用?(Javascript)

调用函数javascript的另一种方法

在JavaScript中实现Object.Assign()的另一种方法

还有另一种方法可以编写用于设置javascript值的if吗?

用JavaScript编写三元运算符的另一种方法

JavaScript:将未知数量的参数从一种方法传递到另一种方法

我的if语句似乎不起作用。可能是另一种方法吗?

使用javascript对JSON文件或至少一个下拉列表进行排序的另一种方法?

为什么JavaScript没有最后一种方法?

在javascript中多次使用一种方法

用JavaScript中的常规exp验证数字在一种情况下不起作用

有没有另一种方法可以在 javascript 中打印直角金字塔而不在显示的末尾添加一条线?

为什么一种方法有效,而另一种无效?

在javascript中将json数据从一种形式转换为另一种形式的最具可扩展性的方法是什么?

为什么一种方法会破坏我的链表而另一种方法不会?

有没有一种方法可以使用javascript阻止javascript?

Javascript是否有一种方法可以简化对值之一的多次检查?

有没有一种方法可以通过JavaScript模拟网络条件?

有没有一种方法可以设置javascript的日志记录阈值

有没有一种方法可以计算javascript中的聚会列表?

有没有一种方法可以遍历JavaScript中可能包含的对象?

使用setInterval的绑定在AngularJS中不起作用的一种方法

在一种方法中两次调用 JQuery 的 html() 函数不起作用

将另一种javascript方法绑定到Anchor标记中的href

为什么malloc seg的一种方法出错,而另一种却没有呢?

将javascript对象从一种形式转换为另一种形式

在JavaScript中将Date从一种格式转换为另一种格式

IntelliJ检查一种方法可以从另一种方法访问

在 Python 中从另一种方法调用一种方法