Javascript:函数调用后的方括号

时间:2016-04-27 20:42:32

标签: javascript syntax javascript-objects

我花了大约15分钟调试一段Javascript代码,发现问题是我写的

matches.push[[-1]];

而不是

matches.push([[-1]]);

就像我想要的那样,matches是一个数组。有人可以向我解释为什么Javascript没有在前者上抛出语法错误,它的含义是什么?

3 个答案:

答案 0 :(得分:3)

为什么

matches.pushFunction Object,你可以通过点表示法或括号表示法access object properties和方法。基本上你要求push Function Object中没有的东西,所以它会产生undefined

enter image description here

注意

如果您使用[-1]中的密钥matches[[-1]] = "something"添加了一些内容,那么它也是有效的,因此语法 有效,而不是您想要做的事情。< / p>

答案 1 :(得分:2)

只是property accessor

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