有人可以帮我理解以下行为吗?我希望,因为我可以从这个回调中设置全局f
,我也应该能够改变它。我不太了解节点如何在 REPL 中处理上下文与全局,以理解这一点,我将不胜感激。
开始一个 REPL 没有useGlobal
$ cat test.js
var repl = require('repl');
repl.start({useGlobal:false});
现在尝试f
连续设置两次:
$ node test.js
> f
ReferenceError: f is not defined
> setTimeout(function(){f=1;}, 0);
> f
1
第一次工作......现在再试一次:
> setTimeout(function(){f=2;}, 0);
> f
1
哼!
第一次运行设置它;第二个不影响它。
(设置useGlobal
:true
我得到了我期望的行为。)