我想我会疯了。我有一个简单的问题,我为某种原因而奋斗。
为什么下面的返回“未定义”?
var testvar={}; testvar[1]=2; testvar[2]=3; alert(testvar.length);
编辑我最初键入testvar [1] .length。我知道这是一个错误。我的意思是testvar.length
解决方法
因为2不是一个数组,它是一个数字。数字没有长度。
也许你打算写testvar.length;这也是未定义的,因为对象(使用{…}符号创建)没有长度。
只有数组有length属性:
var testvar = [ ]; testvar[1] = 2; testvar[2] = 3; alert(testvar.length); // 3
注意,Javascript数组从0开始索引,不一定是sparse(因此,为什么结果是3而不是2 – 关于数组何时稀疏和何时不稀疏的解释,请参见this answer)。