动态执行

【JavaScript】关于eval( )

只愿长相守 提交于 2020-04-29 23:25:30
一、 eval() 动态执行时 使用当前函数的闭包。 var i = 100; function myFunc(ctx) { var i = 'test'; eval('var test = "hello."'); //test执行后为局部变量 } myFunc(); // 输出值100 alert(i); 二、eva l() 访问全局闭包: 1、IE内核环境下: 在 Internet Explorer 中的 JScript 的 eva l() 下,无 论是使用 window.eva l 调用,还是使用 window 作为传入的 this 实例,都不可能让 eva l() 得到访问全局闭包的能力。不过 JScript 中可以使用另一种方法来 得到完全相同的效果,即在 window.execScript() 方法中执行的代码“总是”在 全局闭包中执行。 // 本例建议在Internet Explorer 环境中测试 var i = 100; function myFunc() { window.execScript('i = "test"'); //execScript('i = "test"'); } myFunc(); // 输出值'test', 表明调用myFunc()时修改了全局闭包中的变量i alert(i); 而且, JScript 运行在名为 ActiveScript