JavaScript 新函数作用域 ReferenceError

标签 javascript function scope referenceerror

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

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

如果我在浏览器中运行代码,结果是:“Uncaught ReferenceError: n is not defined”。

此外,我还需要在“新函数”中访问一些其他变量,如“n”。

请帮忙, 谢谢

最佳答案

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

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

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

附言alert 返回 undefined 所以 return alert() 没有做任何有用的事情。

关于JavaScript 新函数作用域 ReferenceError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28592127/

相关文章:

javascript - 在另一个对象中引用对象javascript

javascript - 有没有办法修改运行倒计时?

javascript - 通过go将数组传递给外部js

function - 如何在 haskell 中使用参数内部的函数?

c# - 这段代码中的范围有什么问题?

ruby-on-rails - Rails 4 中的多范围 has_many 关系

javascript - 输入框的ul和li下拉菜单点击事件,是一个建议栏

c++ - 循环调用一次函数 C++

php - 是否有一个 PHP 函数可以在不切割单词的情况下将字符串切割成多个部分?

Javascript 变量作用域