JavaScript中的[]是什么意思?

27
在下面的Javascript代码中,变量被赋值为[],这是什么意思?
var openTollDebug = [];
8个回答

67

这是一个数组字面量。它与声明 new Array() 不完全相同 - 在JavaScript中,Array对象可以被覆盖,但数组字面量不行。下面是一个示例来说明:

// let's overwrite the Array object
Array = function(id) {
 this.id = id;
}

var a = new Array(1);
var b = [];

console.log(a.hasOwnProperty("id")); // true
console.log(b.hasOwnProperty("id")); // false

console.log(a.push); // false, push doesn't exist on a
console.log(b.push); // true,  but it does on b

b.push(2);
console.log(b); // outputs [2]

2
只要Array没有被覆盖,new Array()[]在功能上是相同的。 - Tim Down
5
@Tim - 是的,它们是不同的。在初始化值和长度方面也有所不同 - new Array(5) 不同于 [5] :) - Russ Cam
1
为给出负分的人:为什么?我认为我已经解释过了,声明[]new Array()不完全相同,因为后者基于Array尚未被覆盖的条件。 - Russ Cam
@RussCam,那我们如何覆盖[]构造函数? - Pacerier

7
这意味着一个数组。
var openTollDebug = [];

声明openTollDebug变量并将其初始化为空数组。要向数组中添加元素,可以执行以下操作:

var stringArray = ['element1', 'element2', 'element3'];
alert(stringArray[1]); // displays 'element2'
var numberArray = [1, 2, 3, 4];
alert(numberArray[2]); // displays 3
var objectArray = [{ name: 'john' }, { name: 'peter' }, { name: 'tom' }];
alert(objectArray[1].name); // displays 'peter'

6

这是一个空数组,等同于

var openTollDebug = new Array();

4

这是一个空数组的简写,与new Array()相同。 另外,{}代表一个空对象。在JavaScript中,对象类似于哈希表,因此可以将其用作字典。


2

它创建一个空数组。
这是一种拥有非空对象的好方法。
在JavaScript中,很容易向该对象添加函数和属性。例如:

openTollDebug.title = 'hello world';
openTollDebug.show = function(){alert('Debug');};

作为一个数组,您可以添加项目:

openTollDebug.push('added item');
openTollDebug[3] = 'just add anywhere';

1
许多编程语言都有字面量的构造。[] 是一个数组字面量。
var openTollDebug = [];

等同于

var openTollDebug = new Array();

只需知道出于性能原因,使用[]更受欢迎。

还有其他字面量,如对象字面量。

var MyObject = {
              name:'default',
              age:22,
              hobbies:["golf","video games","otherstuff"]
}

注意带有数据的数组字面量。 [] 创建一个空数组。

1

由于性能方面的考虑,请尽量使用字面值。不要编写

var obj = new Object({name: 'John'})

你只需要写

var obj = {name: 'John'}

你也不写

button.onclick = new Function("alert('Clicked!')"); 

你写

button.onclick = function () { alert('Clicked') }

这里有一个关于此的精彩博客文章的链接


0
var b = [] //it is an array literal.

7
请确认是否已经有提供相同信息的答案。 - Quaternion

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