gpt4 book ai didi

javascript - 为什么使用 Function 构造函数创建的 Javascript 函数无法访问在其外部定义的其他函数?

转载 作者:搜寻专家 更新时间:2023-11-01 05:23:43 27 4
gpt4 key购买 nike

请参阅下面的代码。为什么 test2() 会导致错误而 test1() 不会?如何避免错误(无需在构造函数中重新定义被调用函数)?

function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var xyz = function (){
var test1 = function () { getRandomInt(10, 20); };
test1(); // runs with out problem
var test2 = new Function('getRandomInt(10, 20);');
test2(); //results in "Uncaught ReferenceError: getRandomInt is not defined"
};

最佳答案

我假设所有这些都在另一个函数中(也许是 IIFE?)。使用 new Function 创建的代码在全局范围内求值,似乎 getRandomInt 在那里不可用。

在 jsfiddle 上查看这些演示:it works if unwrapped , but not inside an IIFE .

如果您需要在当前范围内评估代码,则必须使用eval:

var test2 = eval('(function(){return getRandomInt(10, 20);})');

http://jsfiddle.net/7wPK4/2/

引用资料

关于javascript - 为什么使用 Function 构造函数创建的 Javascript 函数无法访问在其外部定义的其他函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19148038/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com