2
$(document).ready(function() {
          $.ajax({
              url: 'objects.php',
              type:'GET',
              dataType: 'json',
              success: function(response)
               var variable = [some_array];

      //how to create an variable containing json array and access this variable outside?
                }
           });
      }); alert(variable);

なぜこれが機能しないのですか?スコープの問題のにおいがします...

ありがとうございました。

4

1 に答える 1

0

まず最初に、コールバック内でグローバル変数を変更するのは適切ではないと言わせてください。代わりに、コールバック内からすべての副作用を起動する必要があります。グローバルな状態を介してコールバックが互いに影響を与えることを回避すると、コードの推論とデバッグがはるかに簡単になることがわかります。

つまり、2 つの関数で変数を「共有」したい場合は、両方が参照できる外部で宣言するだけです。

var x = 0; // Declaring this in an outer scope makes f1 and f2 share it.

function f1() {
    x = 1
}

function f2() {
    console.log(x)
}

f1();
f2(); // Prints '1'

この動作の原因となる機能はクロージャです。

于 2013-03-23T11:45:55.697 に答える