请教一个简单的javascript问题

2025-02-22 21:36:01
推荐回答(5个)
回答1:

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 了

回答2:

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

回答3:

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

回答4:

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更新

回答5:

1,2,3,4 是 a 数组具体的值,共 4 个数,当然是 4 个元素,除非是 var a[4],数组的元素的个数才是 5。