JavaScript新函数范围ReferenceError
JavaScript new Function scope ReferenceError
有什么方法可以让下面的代码正常工作吗?
(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);
})();
相关文章:
- 正在全局范围中查找JavaScript函数
- 如何通过数组更新角度子范围
- 如何使用ngrepeat和双向绑定获得指令的隔离范围
- HTML范围:动态设置值属性
- "实例范围”;TypeScript类的getter/setter
- jquery日期选择器年份范围默认值
- Jpgraph:如何手动设置X轴和Y轴的范围
- 在对象数组中查找多个值的d3范围
- 动态加载angularjs并生成控制器和范围
- 如何通过谷歌应用程序脚本从谷歌文档中的位置确定命名范围
- 在Materialize Calendar中设置年份范围
- 在MVVM视图模型中处理应用程序范围的元素
- setInterval游戏循环的范围问题
- AngularJS获取范围中的选定项目
- 从指定范围创建字符数组
- ES6是否引入了一种机制来生成块范围的函数语句(而不是表达式)
- Angularjs无法将单选按钮与嵌套范围内的模型绑定
- ngDialog-弹出窗口未更新范围变量
- 如何使用D3生成特定范围内的随机颜色
- 如何将输入范围的值传递给JS中的变量