Javascript jQuery.each是否在每次迭代中计算集合表达式?
我的代码如下:Javascript jQuery.each是否在每次迭代中计算集合表达式?,javascript,jquery,Javascript,Jquery,我的代码如下: $.each($.parseJSON(data).content,function(){}); 我想知道$.parseJSON(data).content是否会在每次迭代中进行评估,还是只评估一次?这将显著影响性能。函数调用的参数总是在调用函数之前进行评估。这不是特定于jQuery的。见: 三,。让argList作为计算参数的结果,生成参数值的内部列表(见11.2.4) 八,。返回调用func上的[[Call]]内部方法的结果,提供thisValue作为this值,提供lis
$.each($.parseJSON(data).content,function(){});
我想知道
$.parseJSON(data).content
是否会在每次迭代中进行评估,还是只评估一次?这将显著影响性能。函数调用的参数总是在调用函数之前进行评估。这不是特定于jQuery的。见:
三,。让argList作为计算参数的结果,生成参数值的内部列表(见11.2.4)
八,。返回调用func
上的[[Call]]内部方法的结果,提供thisValue
作为this值,提供listargList
作为参数值
为清楚起见,这是而不是中针对循环的情况:
for(var i = 0; i < $.parseJSON(data).content.length; i++) {
}
for(var i=0;i<$.parseJSON(data.content.length;i++){
}
这里,每次都对第二个表达式求值。这是有意义的,因为在一个简单的循环中,您希望在每次迭代时重新评估条件i
。但您不希望在每次迭代时都运行$.parseJSON
。因此,在for
循环中,将表达式分解出来是有意义的。它只计算一次
您可以在javascript控制台中自己进行测试:
var ary = [1,2,3,4],
getAry = function() {
console.log('ok');
return ary;
};
$.each(getAry(), function(idx, val) {});
“ok”
将被打印一次。对象和迭代次数都被缓存,但它确实使用obj[i]
或obj
中的i来查找每个值,就像任何其他循环一样。您可以通过阅读了解它的工作原理。源位置: