次のコードでは、オブジェクトの配列(たとえば、[{...},{...},{...}]
)であると予想されるmarkers
変数を使用します。しかしながら、インデントレベルに応じて、変数はempy配列(すなわち、[]
)を示す。CoffeeScript/JavaScriptの可変スコープ
jQuery ->
markers = []
$.getJSON '/users.json', (data) ->
for obj in data
marker = {}
marker =
lastname: namify(obj.name)
address: obj.address
markers.push(marker)
console.log("3rd level", markers) # It shows the array I want.
console.log("2nd level", markers) # "markers" shows an empty array.
マイ期待 - 第2レベルに移入配列。 結果 - 第2レベルの空の配列。
第2レベルのときに、第3レベルのようにアレイを取得するにはどうすればよいですか。
は唯一の2つのスコープがあります。スコープチェーンに外部関数のアクティベーションオブジェクトを持つネストされた関数と、外部関数が終了した後も内部関数が存続する場合、そのようなスコープチェーンを維持するクロージャがあります。 Dunnoはどのように上記のCofffeeScript + jQuery + AJAX + JSONにも当てはまります。 PS。 JSONの外観はどうですか? – RobG
問題はスコープとは関係ありません。 'console.log(" 2nd level ")'行は 'console.log(" 3rd level ")'行の前で走り、以下のcenanozenの答えを見てください。 –