JSでスコープがどのように機能するかを理解しようとしています。JavaScriptスコープを理解する
for(var i = 0; i<5; i++){
setTimeout(function timeoutHandler() {
var i = i;
console.log(i); //undefined
})
}
console.log
プリントundefined
5回:私はこのコードのチャンクの理解で正しいならば、あなたは私を伝えることができます。私が理解しているように、timeoutHandler
が実行されると、自身のローカルスコープが自分のi
となります。したがって、timeoutHandler
の実行中に、インタープリタがi
変数を要求し、ローカルスコープで宣言し、この宣言された変数を割り当てに使用することが正しいことが正しいですか?これはなぜそれがundefined
であるかを説明しますが、私は完全に正しいとは確信していません。私が正しく動作するために、このコードは必要ありません おかげ
UPDは、私はちょうどそれがこの例で、それの意味を理解しようとすると、この場合
'のsetTimeoutコールバックハンドラ内VAR I = i'は' i'と 'i'が再びi''に割り当てる前に、まだ定義されていないために新しいスコープを作成します。したがって、 'i'は' undefined'です。 – gurvinder372
まず、 'var i = i'は意味をなさない。 – evolutionxbox
'var i = i'は' var iと等価です。 i = i; '。 – JJJ