すぐに呼び出されるクロージャーで囲まれたJavascriptメインファイルがあります(「グローバル」を汚染しないように:
(function () {
"use strict";
var closureVariable = [];
...
}());
コードにセミコロンではなくコンマが含まれるように、関数ヘッダーから変数を削除するときに、単純な骨の折れるコーディング エラーを作成しました。
function fred () {
var i,
closureVariable = [1,2,3,4];
confused();
}
function confused () {
console.log(closureVariable); // Prints '[]'
}
確かに、「var i」行のセミコロンが欠けていることが問題でした。しかし、私が考えた動作は、現在ローカルで定義されている変数「closureVariable」が上位レベルのスコープ定義を隠し、ローカルで定義された変数の値がスコープチェーンの下位の関数で利用できるはずだったということです (つまり、関数「混乱」は「[1,2,3,4]」を出力する必要がありました。
ここで Javascript スコープ チェーンについて理解していないことは何ですか?