eval解惑
Posted little-ab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了eval解惑相关的知识,希望对你有一定的参考价值。
let a = 1, b = 2, c = 3; let arr = [a, b, c]; function test(p1, p2, p3) console.log(`$p1 ~ $p2 ~ $p3 ~ `); test(...arr); //1 ~ 2 ~ 3 ~ eval(`test($arr)`); //1 ~ 2 ~ 3 ~ 这里等价于eval(`test(a,b,c)`) test(arr); //1,2,3 ~~~ undefined ~~~ undefined ~~~ test(arr.toString()); //1,2,3 ~~~ undefined ~~~ undefined ~~~ 这个等价于test(‘1,2,3‘)
eval(‘context.fn(‘ + args +‘)‘) args=[‘arguments[1]‘,‘arguments[2]‘,...] 数组的展开效果与 eval 无关,是隐式类型导致的,我们来看一个例子: console.log(‘1‘ + [1, 2, 3]) // 11,2,3
function fn(name) console.log(‘my name is ‘ + name); let name = ‘hello‘; eval(‘fn(‘ + ‘name‘ + ‘)‘); //my name is hello eval(‘fn(‘ + name + ‘)‘); //Uncaught ReferenceError: hello is not defined
以上是关于eval解惑的主要内容,如果未能解决你的问题,请参考以下文章