私は次のようなコードを持っています:
$.each($.parseJSON(data).content,function(){});
$.parseJSON(data).content
が反復ごとに評価されるのか、それとも 1 回だけ評価されるのかを知りたいです。これはパフォーマンスに大きく影響します。
私は次のようなコードを持っています:
$.each($.parseJSON(data).content,function(){});
$.parseJSON(data).content
が反復ごとに評価されるのか、それとも 1 回だけ評価されるのかを知りたいです。これはパフォーマンスに大きく影響します。
関数呼び出しの引数は、関数が呼び出される前に常に評価されます。これは jQuery 固有のものではありません。仕様を参照してください:
3. argList を を評価
Arguments
した結果とし、引数値の内部リストを作成します (11.2.4 を参照)。...
8. の [[Call]] 内部メソッドを呼び出し
func
た結果を返し、 this 値として提供thisValue
し、リストargList
を引数値として提供します。
明確にするために、これはループには当てはまりません。for
for(var i = 0; i < $.parseJSON(data).content.length; i++) {
}
ここでは、2 番目の式が毎回評価されます。i < length
単純なループでは、反復ごとに条件を再評価する必要があるため、これは理にかなっています。ただし、すべての反復で実行する必要はありません。$.parseJSON
したがって、for
ループでは、式を因数分解することは理にかなっています。
一度だけ評価されます。
これは、JavaScript コンソールで自分でテストできます。
var ary = [1,2,3,4],
getAry = function() {
console.log('ok');
return ary;
};
$.each(getAry(), function(idx, val) {});
"ok"
一度印刷されます。