如何在运行时来“修改”词法作用域呢?
- eval
javascript中的 eval()函数可以接受一个字符串为参数,会把里面的内容当做书写代码时就存在这个位置的代码,直接上代码
function foo(str , a) {
eval(str);
console.log(a, b);
}
var b = 1;
foo("var b = 2 ;",1)
但!
在es6语法中解决了这个问题,如果用let去声明变量就不会产生这个情况。
function foo(str , a) {
eval(str);
console.log(a, b);
}
let b = 1;
foo("let b = 2 ;",1)