使用eval的注意事项
eval的使用注意事项,eval 只在被直接调用并且调用函数就是 eval 本身的时候,才在当前作用域中执行。通过call
来调用也属于间接调用。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
var foo = 1; function test(){ var foo = 100; eval('foo=2'); // 修改的是test方法内部的foo var bar = eval; bar('foo=3'); // 修改的是全局作用域的foo eval.call(null, 'foo=4'); // 修改的是全局作用域的foo return foo; } console.log(test()); // 2 console.log(foo); // 4 |
参考文章: https://www.cnblogs.com/xiaodongaini/p/5251977.html
伪装的eval