有没有办法让下面的代码工作?
(function(){
var n = "abc";
(new Function("return alert(n);"))();
})();
如果我在浏览器中运行代码,结果是:“未捕获的ReferenceError:n未定义”。
另外,我还需要其他一些变量,比如“n”也可以在“新函数”中访问。
请帮忙, 谢谢
答案 0 :(得分:6)
当您使用new Function
方法(顺便说一下,类似于eval
)时,您的代码将在全局范围内执行! n
只存在于匿名函数中,它不是全局函数。
除非100%必要,否则您不应该使用new Function
。
(function(){
var n = "abc";
(function(){return alert(n);})();
})();
P.S。 alert
会返回undefined
,因此return alert()
没有做任何有用的事情。
答案 1 :(得分:4)
所以你需要将这些变量变为全局变量。
(function(){
window.n = "abc";
(new Function("return alert(n);"))();
})();