3

これは簡単な質問のようですが、答えが見つかりません。

たとえば、次のオブジェクトがある場合:

  var a = {
    foo : "FOO",
    bar : "BAR"
  }

ここで、オブジェクトのプロパティを一覧表示する場合は、次のようにする必要があります。

  for( var b in a ) {
    // do something
  }

または、私はこれを行うことができます:

  for( b in a ) {
    // do something
  }

しかし、これらの方法の違いはどれですか?なぜ「var」を使用するのか、またはforinloopで「var」を使用しないのか。

4

3 に答える 3

7

以前に宣言されていない変数を先頭に追加せずに使用する場合はvar、グローバル変数を作成します。

function scope() {
    a = "hi";      // global
    var b = "ho";  // local
}

ただし、違いはありません

for (var b in a) { /* .. */ }

var b;
for (b in a) { /* .. */ }
于 2012-08-13T09:00:31.370 に答える
3

varがないと、グローバルになり、エラーや予期しない動作につながる可能性bのある別の定義と対話できるようになります。b

例えば、

function example1(){
 for( b in a ){
  example2();
  //now when b comes back, it will reference the last item from example2,
  //essentially skipping the entire interior of a.
 }
}

function example2(){
 for( b in a ){
  //access a[b]
 }
}
于 2012-08-13T09:01:04.933 に答える
1

入力しない場合varはグローバル変数を宣言することになります。したがって、後で使用する予定がない場合は意味がなく、メモリを必要とせずに消費することになります。

于 2012-08-13T09:01:25.457 に答える