JavaScript 数组使用方括号 `[ ]` 而非圆括号 `()` 进行 `push` 操作,为何不会出现错误?

6

我是无意中这样做的...

var numbers = [1, 2, 3, 4];
numbers.push[5];

为什么没有错误信息?

push 需要圆括号而不是方括号。这只是一个简单的打字错误。我没有注意到自己在做什么...但是为什么没有出现错误信息?

据我所知,数字数组没有被修改过。它什么也没做...


1
因为它只能评估为undefined - 任何属性(在javascript中函数只是属性)都可以具有属性... - Jaromanda X
3
这段话的意思是:这只是在访问名为push的属性上的名为5的属性。那里没有语法错误,只是逻辑上的错误。 - Patrick Evans
1个回答

9

numbers.push 只是一个函数,但你企图从它中查找位于 key 为 5 的属性,这会导致其结果为 undefined

function test() {
  console.log("test");
}


// test[5] evaluates to `undefined` and does nothing
console.log(test[5]);

// We can even manually set this without messing up the function
test[5] = "foo";

// outputs "foo"
console.log(test[5]);

// outputs our expected value "test"
test();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接