这真的是一个关于JavaScript效率的问题,我可能会忽略这一点。无论如何,假设您定义一个for语句,如:for (var i = 0; i<10; i++){...}
。每次for语句循环,它是否每次循环检查for语句的参数?为了更清楚,我们假设我们使用一个返回随机数的函数,我们在for循环中使用它作为我们的条件,如下所示:
function test(){
var z = /*NEW RANDOM VALUE*/;
return z;
}
for (var i = 0; i<test();i++){
...
}
test()函数会在每个循环中调用,还是只调用一次?
修改
感谢您的大力支持,我本质上不确定是否事先为一个条件定义一个变量在for循环中是有益的 - 如果每个循环都调用该条件,那么定义一个变量就是(并且是)。
答案 0 :(得分:2)
我刚刚使用了以下代码,它回答了我自己的问题:是每个循环检查条件。以下是我用来测试的内容:
function rand(){
console.log("rand() called.");
return Math.floor((Math.random()*10)+1);
}
for (var i = 0;i<rand();i++){
console.log("Loop: "+i);
}
结果:
答案 1 :(得分:1)
var l=arr.length;
for (var i=0; i<l; i++) { /*...*/ }
答案 2 :(得分:1)
是的,每次检查条件。如果您要编写以下内容,则每次都会计算arr.length。
var arr = ['cat', 'dog', 'llama'];
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]);
}
相反,编写下面的内容会更有效,因为arr.length只会计算一次。
var arr = ['cat', 'dog', 'llama'];
var len = arr.length;
for (var i = 0; i < len; i++) {
console.log(arr[i]);
}