Jar*_*nal 4 javascript function
请参阅下面的代码.为什么不会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"
};
Run Code Online (Sandbox Code Playgroud)
我假设所有这些都在另一个函数内(IIFE,也许?).创建的代码new Function在全局范围内进行评估,似乎getRandomInt在那里不可用.
在jsfiddle上检查这些演示:如果解包,它可以工作,但不能在IIFE内部工作.
如果需要在当前范围内评估代码,则必须使用eval:
var test2 = eval('(function(){return getRandomInt(10, 20);})');
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
606 次 |
| 最近记录: |