Function()构造函数:ReferenceError:未定义范围

时间:2017-06-02 12:21:53

标签: javascript node.js scope

我遇到了一个可能很奇怪的问题。我有一个名为a.js的js脚本:

var scope = "global";
var f = new Function("return scope");
console.log(f.toString());
f();

当我运行nodejs a.js时,它会抱怨:

ReferenceError: scope is not defined
    at eval (eval at <anonymous> (/tmp/test/jscripttest/b.js:2:9), <anonymous>:2:8)
    at Object.<anonymous> (/tmp/test/jscripttest/b.js:4:1)
    at Module._compile (module.js:410:26)
    at Object.Module._extensions..js (module.js:417:10)
    at Module.load (module.js:344:32)
    at Function.Module._load (module.js:301:12)
    at Function.Module.runMain (module.js:442:10)
    at startup (node.js:136:18)
    at node.js:966:3

但是当我使用命令nodejs REPL.load a.js中以交互方式运行它时,它可以正常工作。

> .load a.js
> var scope = "global";
undefined
> var f = new Function("return scope");
undefined
> console.log(f.toString());
function anonymous() {
return scope
}
undefined
> f();
'global'

我的nodejs版本为v4.2.6 那么为什么脚本以交互方式工作,而不是作为文件选项呢? 提前谢谢。

0 个答案:

没有答案