我遇到了一个可能很奇怪的问题。我有一个名为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
那么为什么脚本以交互方式工作,而不是作为文件选项呢?
提前谢谢。