0

したがって、今日は次のように見えます。

$$('input').each(function() {
 // do something
});

それとこれの違いは何ですか:

$$('input').each( // do something );

最初の例のプライベート関数はその for ループ スコープ内にあるため、他の場所で参照することはできません。

4

3 に答える 3

2

無名関数は、現在のスコープと変数を認識しています。

function a() {
   var foo = 'test';
   $('something').each(function() {
      alert(foo);
   })
}

fooこの関数は、スコープ内で定義されているため、'test' に警告します。

function a() {
   var foo = 'test';
   $('something').each(b)
}

function b() {
   alert(foo);
}

この関数は、変数fooが未定義であることを示す JavaScript エラーを引き起こします。

正確なスコープ内でのみ意味をなす関数を定義する必要があり、多くの変数を投げたり、多くのことを再計算したりしたくない場合は、無名関数を定義する方が快適です。

于 2012-03-23T15:00:44.303 に答える
2

これはプライベート関数ではなく、単なる匿名関数 (名前のない関数) です。

あなたがすることができます:

$('input').each(function() {
 // do something
});

または、次のようにすることもできます。

function foo() {
 // do something
}
$('input').each(foo);

とにかく、.eachメソッドには、コールバックであるパラメーターとなる関数が必要です。

于 2012-03-23T14:53:39.167 に答える
1

最初の関数はプライベートではありません。JavaScript にはレキシカル スコープがあるため、包含スコープ内のすべての変数を参照してクロージャーを形成できます。

2 番目の関数はほとんど同じことですが、できることは関数名を指定することだけです。そうしないと、構文エラーが発生します。

簡単な回答: function ステートメントをそこに置いて、複数のことを行うか、1 つのことを行ってパラメーターを提供します。

于 2012-03-23T14:53:31.290 に答える