有没有办法为eval禁用一些变量?
var test = 'example';
eval('console.log(test)'); // here I would like test null
console.log(test); // here test should display 'example'
答案 0 :(得分:4)
将eval
调用包含在IIFE内,并使用局部变量覆盖外部变量:
function doSeomthing() {
var test = 'example';
(function() {
var test = null;
eval('console.log(test)');
})();
console.log(test);
}
eval
代码只能访问IIFE的本地test
,而不能访问test
内宣布的doSomething
。
注意,全局变量无法以这种方式显示为阴影,因为它们可以作为window
或global
的属性进行访问。您可以隐藏window
(或global
)并拒绝将所有全局变量作为window
的属性进行访问。