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

在声明 JavaScript 数组时,“{}”和“[]”有什么区别? 通常我会说

var a=[];

将数组声明为 var a={}的意义是什么

178986 次浏览

当你宣布

var a=[];

您正在声明一个空数组。

但当你宣布

var a={};

你正在声明一个对象。

虽然 Array 在 Javascript 中也是 Object,但它是数字键配对值。 它具有对象的所有功能,但增加了一些数组方法,如推,Splice,长度等。

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

var a={name:"abc",age:"14"};

并且可以访问类似于

console.log(a.name);

可以这样理解:

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

你也能理解

var a = {};等于 var a= new Object();

注:

当您对集合中元素的顺序(类型相同)感到困扰时,您可以使用 Array,否则您可以使用对象。对象中的顺序不能得到保证。

这是两码事。

[]正在声明一个 Array:
给定的,由数值索引保存的元素列表。

{}正在声明一个新对象:
一个对象,该对象的字段包含 Names 和 type + value,
有些人喜欢称之为“关联数组”。 而不是数组。

你可以阅读更多@本文

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

[]正在声明一个数组。

{}正在声明一个对象。

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

The additional features consist of a magic .length property that keeps track of the number of items in the array and a whole slew of methods for operating on the array such as .push(), .pop(), .slice(), .splice(), etc... You can see a list of array methods 给你.

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

var x = {};
x.foo = 3;
x["whatever"] = 10;
console.log(x.foo);      // shows 3
console.log(x.whatever); // shows 10

对象属性可以通过 x.foo语法访问,也可以通过类似数组的语法 x["foo"]访问。后一种语法的优点是,您可以使用一个变量作为属性名,比如 x[myvar],并且使用后一种语法,您可以使用包含 Javascript 在 x.foo语法中不允许的字符的属性名。

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


数组是一个对象,因此它具有对象的所有相同功能,外加一系列额外功能,用于管理从 0开始到一定长度的编号索引的 命令顺序列表。数组通常用于通过数字索引访问的项的有序列表。并且,因为数组是有序的,所以有很多有用的特性来管理列表 .sort()的顺序,或者从列表中添加或删除内容。

JSON 的语法

对象 = {} | {成员}

  • 成员 = 成对 | 成对,成员

Array = [] | [ element ]

  • Element = value | value 元素

价值 = 字符串 | 数字 | 对象 | 数组 | 真 | 假 | 空

var a = [];

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

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


var a={}

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

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

在 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 中的对象就像数组一样,但是“ index”可以是任何字符串。

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

[ ]-当我们声明一个空数组时,

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

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

但如果你跑步

[ ].constructor.name  //Array

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