是否可以使用 eval 命令在全局范围内执行某些操作?例如,这会导致错误:
<script>
function execute(x){
eval(x);
}
function start(){
execute("var ary = new Array()");
execute("ary.push('test');"); // This will cause exception: ary is not defined
}
</script>
<html><body onLoad="start()"></body></html>
我知道“with”关键字将设置特定范围,但是是否有全局范围的关键字?或者是否可以定义一个自定义范围来允许它工作?
<script>
var scope = {};
function execute(x){
with(scope){
eval(x);
}
}
function start(){
execute("var ary = new Array()");
execute("ary.push('test');"); // This will cause exception: ary is not defined
}
</script>
<html><body onLoad="start()"></body></html>
本质上,我想做的是拥有一个全局执行函数......
(function(){
eval.apply(this, arguments);
}(a,b,c))
这将使用全局对象调用 eval,window
在浏览器中,如this
argument 传递您传递给匿名函数的任何参数。
eval.call(window, x, y, z)
or eval.apply(window, arguments)
如果你确定的话也是有效的window
是全局对象。然而,情况并非总是如此。例如,Node.js 脚本中的全局对象是process
如果我没记错的话。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)