JavaScript新函数范围ReferenceError

JavaScript new Function scope ReferenceError

本文关键字:范围 ReferenceError 函数 新函数 JavaScript      更新时间:2024-01-04

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

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

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

此外,我还需要一些其他变量,如"n",使其在"新函数"中也可访问。

请帮忙,感谢

当您使用new Function方法(顺便说一下,它与eval类似)时,您的代码将在全局范围内执行!n只存在于匿名函数内部,它不是全局的。

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

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

p.S.alert返回undefined,所以return alert()没有做任何有用的事情。

因此,您需要使这些变量具有全局性。

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

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

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