我花了大约15分钟调试一段Javascript代码,发现问题是我写的
matches.push[[-1]];
而不是
matches.push([[-1]]);
就像我想要的那样,matches
是一个数组。有人可以向我解释为什么Javascript没有在前者上抛出语法错误,它的含义是什么?
答案 0 :(得分:3)
matches.push
是Function Object
,你可以通过点表示法或括号表示法access object properties和方法。基本上你要求push
Function Object
中没有的东西,所以它会产生undefined
。
如果您使用[-1]
中的密钥matches[[-1]] = "something"
添加了一些内容,那么它也是有效的,因此语法 有效,而不是您想要做的事情。< / p>
答案 1 :(得分:2)
var matches = [];
matches.push[1] = 'bla'
document.write(matches.push[1]);
基本上,您可以执行以下操作:
matches.push[[-1]];
解析为(括号中的单个数字变为string)而accessor for objects is a string则为
matches.push['-1']
然后解析为
undefined
因为属性'-1'
未定义。
答案 2 :(得分:1)
js中的所有东西都是一个对象,甚至是一个函数。我想引擎刚刚引用push
函数/对象的(不存在的)字段。这导致undefined
。