一.看以下两段Js代码:
//code-list-A
var a = {};
var i = 0;
while (i < 10){
a[i] = i * i;
i++;
};
var total = 0;
for(var j = 0,len = a.length;j < len;j++){
total += a[j]
};
console.log(total); //0
//code-list-B
var a = {};
var i = 0;
while (i < 10){
a[i] = i * i;
i++;
};
a.length = i;
var total = 0;
for(var j = 0,len = a.length;j < len;j++){
total += a[j]
};
console.log(total); //285
红色代码什么意思?取累加的值作为数组长度?如果当前是10,那么a就是长度为10的数组,那有什么用?
首先a不是数组,是一个object;代码A没有a.length属性所以没有执行for循环里面的代码,所以total为0;代码B定义了a.length=10所以执行了for循环
在本例中,为什么不直接a.length = 10;而非要a.length = i; ?
@殷敏峰: 你为什么要纠结a.length=10还是a.length=i呢
@liaoshifa10: 我还是糊涂:在第一个while();已经赋值了,也就是有数据了,有数据也就意味着有长度,这句代码不是多余了吗,但是少了却是结果“0” ,...
@殷敏峰:a不是数组,是一个object