for a in arr
do_something_with arr.length
编译为:
var a, _i, _len;
for (_i = 0, _len = arr.length; _i < _len; _i++) {
a = arr[_i];
do_something_with(arr.length); // I want to use '_len' here
}
是否可以使用缓存的值arr.length
而不是在每次迭代中计算它?
for a in arr
do_something_with arr.length
编译为:
var a, _i, _len;
for (_i = 0, _len = arr.length; _i < _len; _i++) {
a = arr[_i];
do_something_with(arr.length); // I want to use '_len' here
}
是否可以使用缓存的值arr.length
而不是在每次迭代中计算它?
如果您有一个定义的数组而不是一个范围数组,那么您实际上可以在块中使用 _len :
for a in arr
_len == arr.length
但是,这依赖于 CS 内部结构,可能会在新版本中发生变化。它也不适用于每个阵列。
arr = [0..10]
for a in arr
#this works
console.log _len
但:
for a in [0..10]
#this doesn't work
console.log _len
我认为如果你想使用数组长度的缓存版本,最好在你的代码中明确地做到这一点,而不是依赖于 CS 的内部变量名称。
宁可这样做:
arrLength = arr.length
for a in arr
doSomethingWith arrLength
考虑?
for i in [0...len = arr.length]
a = arr[i]
do_something_with len