首页新闻找找看学习计划

Javascript代码的小小疑问(23)

0
[已解决问题] 解决于 2015-06-12 11:13

一.看以下两段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的数组,那有什么用?

Coca-code的主页 Coca-code | 初学一级 | 园豆:9
提问于:2015-06-12 09:19
< >
分享
最佳答案
0

首先a不是数组,是一个object;代码A没有a.length属性所以没有执行for循环里面的代码,所以total为0;代码B定义了a.length=10所以执行了for循环

奖励园豆:5
liaoshifa10 | 菜鸟二级 |园豆:252 | 2015-06-12 09:35

在本例中,为什么不直接a.length = 10;而非要a.length = i;  ?

Coca-code | 园豆:9 (初学一级) | 2015-06-12 09:50

@殷敏峰: 你为什么要纠结a.length=10还是a.length=i呢

liaoshifa10 | 园豆:252 (菜鸟二级) | 2015-06-12 10:06

@liaoshifa10: 我还是糊涂:在第一个while();已经赋值了,也就是有数据了,有数据也就意味着有长度,这句代码不是多余了吗,但是少了却是结果“0” ,...

Coca-code | 园豆:9 (初学一级) | 2015-06-12 10:10

@殷敏峰:a不是数组,是一个object

liaoshifa10 | 园豆:252 (菜鸟二级) | 2015-06-12 10:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册