声明JavaScript数组时“{}”和“[]”之间有什么区别?

时间:2015-11-04 06:14:44

标签: javascript arrays object javascript-objects declaration

声明JavaScript数组时“{}”和“[]”之间有什么区别? 通常我声明像

var a=[];

将数组声明为var a={}

的含义是什么

8 个答案:

答案 0 :(得分:52)

似乎没有人解释数组和对象之间的区别。

[]正在声明一个数组。

{}正在声明一个对象。

数组具有带有附加功能的对象的所有功能(您可以将数组视为对象的子类),其中在Array子类中添加了其他方法和功能。事实上,typeof [] === "object"进一步向您展示数组是一个对象。

其他功能包括一个魔术.length属性,用于跟踪数组中的项目数以及一系列用于操作数组的方法,例如.push(),{{1} },.pop().slice()等...您可以看到数组方法列表here

对象使您能够将属性名称与值关联,如下所示:

.splice()

可以通过var x = {}; x.foo = 3; x["whatever"] = 10; console.log(x.foo); // shows 3 console.log(x.whatever); // shows 10 语法或类似数组的语法x.foo访问对象属性。后一种语法的优点是您可以使用变量作为属性名称,如x["foo"],并使用后一种语法,您可以使用包含Javascript在x[myvar]中不允许的字符的属性名称语法。

属性名称可以是任何字符串值。

数组是一个对象,因此它具有对象的所有相同功能以及一系列用于管理有序顺序编号索引列表的附加功能x.foo并且进展到一定程度。数组通常用于通过数字索引访问的有序项目列表。并且,由于数组是有序的,因此有许多有用的功能可以管理列表0的顺序或添加或删除列表中的内容。

答案 1 :(得分:9)

宣布

var a=[];

你要声明一个空数组。

但是当你宣布

var a={};

你要声明一个对象。

尽管Array在Javascript中也是Object,但它是数字键配对值。 其中包含了对象的所有功能,但添加了一些数组方法,如Push,Splice,Length等。

因此,如果您需要使用数字键的某些值,请使用Array。 否则使用对象。 你可以创建像:

这样的对象
var a={name:"abc",age:"14"}; 

可以访问

之类的值
console.log(a.name);

答案 2 :(得分:4)

var a = [];

它用于括号中的简单值数组。 例如

var name=["a","b","c"]

var a={}

也用于值数组和对象/属性。 例如

var programmer = { 'name':'special', 'url':'www.google.com'}

答案 3 :(得分:3)

可以这样理解:

var a= []; //creates a new empty array
var a= {}; //creates a new empty object

你也可以理解

var a = {};相当于var a= new Object();

注意:

当您对集合中元素(相同类型)的顺序感到困扰时,您可以使用数组,否则您可以使用对象。在对象中,订单无法保证。

答案 4 :(得分:1)

他们是两件不同的事情......

[]声明一个数组:
给定,由数字索引保存的元素列表。

{}宣布一个新对象:
给定,具有名称和类型+值的字段的对象,
有人喜欢把它想象成“联想阵列”。 但不是数组,代表它们。

您可以阅读更多@ This Article

答案 5 :(得分:1)

JSON语法

object = {} | {members}

  • members = pair |对,成员
  • pair = string:value

array = [] | [要素]

  • elements = value |价值元素

value = 串|数|对象|阵列|真|假|空

答案 6 :(得分:1)

在JavaScript中,数组和对象实际上非常相似,尽管在外部它们看起来有点不同。

对于数组:

var array = [];
array[0] = "hello";
array[1] = 5498;
array[536] = new Date();

正如您所看到的,JavaScript中的数组可能是稀疏的(有效指标不必连续),并且它们可以包含任何类型的变量!这很方便。

但是我们都知道JavaScript很奇怪,所以这里有一些奇怪的东西:

array["0"] === "hello"; // This is true
array["hi"]; // undefined
array["hi"] = "weird"; // works but does not save any data to array
array["hi"]; // still undefined!

这是因为JavaScript中的所有内容都是一个Object(这也是您使用new Array()创建数组的原因)。结果,数组中的每个索引都变成了一个字符串,然后存储在一个对象中,因此一个数组只是一个不允许任何人用一个不是正整数的键来存储任何东西的对象。

那么对象是什么?

JavaScript中的对象就像数组一样,但"索引"可以是任何字符串。

var object = {};
object[0] = "hello"; // OK
object["hi"] = "not weird"; // OK

在使用对象时,您甚至可以选择不使用方括号!

console.log(object.hi); // Prints 'not weird'
object.hi = "overwriting 'not weird'";

您可以更进一步,定义如下对象:

var newObject = {
    a: 2,
};
newObject.a === 2; // true

答案 7 :(得分:0)

[ ] - 每当我们声明一个空数组时都会使用它,

{ } - 每当我们声明一个空对象时都会使用它

typeof([ ]) //object
typeof({ }) //object

但是如果你跑步

[ ].constructor.name  //Array

所以从这里,你会明白它是一个数组,这里的Array是基类的名称。 JavaScript Array 类是一个全局对象,用于构造作为高级列表类对象的数组。