Javascript 奇怪的js eval/模板字符串行为
为了回答stackoverflow中的一个问题,我在我的chrome控制台中进行了一些测试,发现下面的例子我无法理解Javascript 奇怪的js eval/模板字符串行为,javascript,ecmascript-6,eval,template-strings,Javascript,Ecmascript 6,Eval,Template Strings,为了回答stackoverflow中的一个问题,我在我的chrome控制台中进行了一些测试,发现下面的例子我无法理解 var-vals=['x','y','z']; forEach(val=>{eval(`var${val}=1;console.log('${val}=',${val})`;})首先在评估的上下文之外评估模板字符串。因此,你已经有效地做到了: eval("var x = 1; console.log('x = ', x)"); eval("var y = 1; console.
var-vals=['x','y','z'];
forEach(val=>{eval(`var${val}=1;console.log('${val}=',${val})`;})代码>首先在评估的上下文之外评估模板字符串。因此,你已经有效地做到了:
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时,将其替换为console.log
以查看实际发送到调用的字符串将非常有用:
var-vals=['x','y','z'];
forEach(val=>{console.log('eval string:','var${val}=1;console.log('${val}=',${val})`;})代码>