4
有人能幫我理解下列行爲嗎?我預計,因爲我可以設置全球f
從這個回調裏面,我應該也可以更改它。我對REPL中的節點處理上下文與全局是如何理解這一點並不十分了解,我很感謝任何見解。NodeJS 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
我得到我所期望的行爲。)
只是一個注:問題與延遲> 0也存在,並用匿名函數NOT存在: '!function(){f = 2}();'按預期工作。我沒有想法......也許是一個錯誤? –
我認爲「this」https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout#The_.22this.22_problem對「this」問題有一些影響:) –
@chumkiu關鍵字「這個「不在代碼中使用。爲什麼要對上述問題負責? – Javaguru