1

试图在stackoverflow中回答一个问题,我在我的chrome控制台中做了一些测试,发现以下情况我无法理解。

var vals = ['x','y','z'];
vals.forEach(val => { eval(`var ${val} = 1; console.log('${val} = ', ${val})`);});

javascript 如何知道我何时将 ${val} 称为“vals”数组中定义的 val,以及何时引用它已将每个值存储在该数组中的值?

我的意思是,为什么它不记录:

x = x;

y = y;

z = z;

或者

1 = 1;

1 = 1;

1 = 1;

4

1 回答 1

3

首先评估模板字符串,在您的eval. 所以你已经有效地完成了:

eval("var x = 1; console.log('x = ', x)");
eval("var y = 1; console.log('y = ', y)");
eval("var z = 1; console.log('z = ', z)");

当然,这只是打印每个变量及其值。

像这样使用 eval 时,将其替换为 aconsole.log以查看实际发送到调用的字符串会很有用:

var vals = ['x','y','z'];
vals.forEach(val => { console.log('eval string:', `var ${val} = 1; console.log('${val} = ', ${val})`);});

于 2017-10-03T07:59:34.150 回答