在顶级的node.js控制台应用程序中,我有:
var obj1 = { a: 1 };
var obj2 = { a: 2 };
var funcA = function () { return obj1.a + obj2.a };
var funcB = new Function("return obj1.a + obj2.a");
console.log(funcA()); // => 3
console.log(funcB()); // => ReferenceError: obj1 is not defined
函数构造函数(funcB)创建的函数被记录为“只能访问它们自己的局部变量和全局变量”,但是obj1是全局的,它看不到它。
我需要一些方法让funcB像funcA一样运行。可以在返回之前添加代码,和/或向funcB添加参数,但我试图找到一种不会改变或需要在返回后解析源的方法。我觉得我需要理解为什么它甚至不能首先看到全局变量。