var x = myFunction(y);
for (let index = 0; index < x; index++) {
//do something
}
问题:循环表达式内的x是否必须在每次循环时都运行myFunction才能获取x的值?
如果是这样,将For循环编写为:
for (let index = 0; index < myFunction(y); index++) {
//do something
}
最佳答案
不,仅当使用myFunction(y)
显式调用该函数时,才调用该函数。调用后,返回值存储在x
变量中。然后,在循环内部,在每次迭代中,所有发生的事情就是将现有的x
变量与index
进行比较。
您的第一个代码效率更高。
如果变量是全局对象的属性,并且是吸气剂,则仅引用变量只会导致函数调用和可能产生的副作用。
Object.defineProperty(window, 'foo', {
get () {
console.log('function running');
}
});
foo;
foo;
foo;
这是非常不寻常的。
关于javascript - For循环是否在表达式内部处理函数,直到循环结束?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60842510/