JavaScript 新函数范围 ReferenceError

JavaScript new Function scope ReferenceError

有什么方法可以使下面的代码正常工作吗?

(function(){
    var n = "abc";
    (new Function("return alert(n);"))();
})();

如果我 运行 浏览器结果中的代码是:“未捕获的引用错误:n 未定义 ”。

此外,我还需要一些其他变量,如 "n" 也可以在 "new Function" 中访问。

请帮忙, 谢谢

因此您需要将这些变量设为全局变量。

(function(){
    window.n = "abc";
    (new Function("return alert(n);"))();
})();

当您使用 new Function 方法(类似于 eval 的方式)时,您的代码将在 global 范围内执行! n 只存在于那个匿名函数中,它不是全局的。

除非 100% 必要,否则您不应该使用 new Function

(function(){
    var n = "abc";
    (function(){return alert(n);})();
})();

P.S。 alert returns undefined 所以 return alert() 没有做任何有用的事情。

您需要将变量作为参数传递给创建的函数。

(function(){
    const myVar = 1000;
    (new Function("return alert(n);"))(myVar);
})();