请教一个简单的javascript问题

来源:百度知道 编辑:UC知道 时间:2024/05/29 19:36:29
一段简单的javascrpt代码:
var a = [1, 2, 3, 4];

a['foo'] = 'Hello World';

alert(a.length);
请问a.length的值为何是4?为什么不是5?
大家只说了现象,都没有深入到问题的本质,希望大家继续回答,谢谢!

length 属性返回数组的元素个数
var a = [1,2,3,4]; // a 中有四个元素,对吧

---------------------------

a['foo'] = 'Hello World';
/相当于 a.foo = 'Hello World';
这里 'Hello Word' 不是作为数组元素加入.
'Hello Word' 是赋值给 a 的属性 foo 即 a.foo
js 里, 取属性可以用 点号运算符, 如 obj.property; 也可以用数组形式, 如 obj['property']

既然 a['foo'] = 'Hello World'; 不是给 a 加入元素

alert(a.length); 当然是 4 了

哈哈,楼上几位都是按自己的片面理解来强硬回答。
我来接分吧。
首先,alert(a.length);显示为4是对的,为什么不显示5那是因为a['foo']并不是一个数组,而是对象a的一个属性,等价于a.foo,你可以alert(a.foo);如果是a[5]='ddd',那alert(a.length)就等于5了。
明白了不?

foo是什么???
a.length是指数值a的元素个数
a有a[0],a[1],a[2],a[3]共4个元素,为什么会得5?
其中a[0]为1,其它同理。。。

a.length得到的是 var a=[1, 2, 3, 4];的长度
似乎a['foo']视作了另一个数组
但是用a['foo']可以得到其值

我猜是因为javascript只对"var a=[1, 2, 3, 4];"更新a.length属性
对于单独分配的a['foo']没进行a.length更新

1