したがって、今日は次のように見えます。
$$('input').each(function() {
// do something
});
それとこれの違いは何ですか:
$$('input').each( // do something );
最初の例のプライベート関数はその for ループ スコープ内にあるため、他の場所で参照することはできません。
したがって、今日は次のように見えます。
$$('input').each(function() {
// do something
});
それとこれの違いは何ですか:
$$('input').each( // do something );
最初の例のプライベート関数はその for ループ スコープ内にあるため、他の場所で参照することはできません。
無名関数は、現在のスコープと変数を認識しています。
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 エラーを引き起こします。
正確なスコープ内でのみ意味をなす関数を定義する必要があり、多くの変数を投げたり、多くのことを再計算したりしたくない場合は、無名関数を定義する方が快適です。
これはプライベート関数ではなく、単なる匿名関数 (名前のない関数) です。
あなたがすることができます:
$('input').each(function() {
// do something
});
または、次のようにすることもできます。
function foo() {
// do something
}
$('input').each(foo);
とにかく、.each
メソッドには、コールバックであるパラメーターとなる関数が必要です。
最初の関数はプライベートではありません。JavaScript にはレキシカル スコープがあるため、包含スコープ内のすべての変数を参照してクロージャーを形成できます。
2 番目の関数はほとんど同じことですが、できることは関数名を指定することだけです。そうしないと、構文エラーが発生します。
簡単な回答: function ステートメントをそこに置いて、複数のことを行うか、1 つのことを行ってパラメーターを提供します。