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

IT技术 javascript arrays object javascript-objects declaration
2021-03-18 19:07:09

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

var a=[];

将数组声明为什么意思 var a={}

6个回答

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

[] 正在声明一个数组。

{} 正在声明一个对象。

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

附加的功能包括一个神奇的.length属性,跟踪数组中的项目数和方法的阵列,如在操作整体转换的.push().pop().slice().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"]后一种语法的优点是您可以使用变量作为属性名称,x[myvar]并且使用后一种语法,您可以使用包含 Javascript 在x.foo语法中不允许的字符的属性名称

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


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

@SurajJain - 我不明白其中的背景。也许您应该写下自己的问题并解释您尝试做的事情的整体背景。
2021-05-03 19:07:09
为什么我能做[].但不能{}.
2021-05-10 19:07:09
实际上,我们可以使用空数组字面量对数组做任何我们可以做的事情[].splice,但是使用空对象字面量{}我们不能,就像如果我这样做{}.hasOwnProperty会出错,为什么会这样?
2021-05-16 19:07:09
@SurajJain - 它可能与上下文中的语言语法有关,因为它{}也表示一个新块,所以你不能用它来表示一个上下文中的对象,它可能意味着一个新块或它的含义可能不明确。你可以做到let val = {value: true}.hasOwnProperty("value"); console.log(val);
2021-05-17 19:07:09
是的,可能是这样,它也表示一个新块。感谢您的澄清。
2021-05-19 19:07:09

当你声明

var a=[];

您正在声明一个空数组。

但是当你声明

var a={};

您正在声明一个 Object 。

虽然 Array 也是 Javascript 中的 Object 但它是数字键配对值。它具有对象的所有功能,但添加了一些数组方法,如 Push、Splice、Length 等。

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

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

并且可以访问像

console.log(a.name);
感谢您的回答@Mytri
2021-04-25 19:07:09
一个小示例代码对我非常有用@Tushar
2021-05-04 19:07:09
@Venkatvar arr = ['A', 'B']; console.log(arr[0]) // Avar obj = { name: 'A', surname: 'B'}; console.log(obj.name); // A OR console.log(obj['name'])
2021-05-08 19:07:09
示例很有用@Mytri
2021-05-10 19:07:09
如何创建实例和访问键值对
2021-05-11 19:07:09
var a = [];

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

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

var a={}

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

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

可以这样理解:

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

你也可以这样理解

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

笔记:

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

@nnnnnn,Tushar 无论如何那都是噪音,这不是问题,也不应该是。这是一个单独的答案,应该在一个单独的问题中。
2021-04-20 19:07:09
@nnnnnn:- 这个可以参考:数组和对象有什么区别?
2021-04-28 19:07:09
那么数组和对象有什么区别呢?
2021-05-04 19:07:09
@RahulTripathi nnnnnn 意味着您还应该解释它们之间的区别以及何时应该使用数组与对象
2021-05-08 19:07:09
当需要集合中元素的顺序时,您可以使用数组,当顺序不重要时,我们可以使用对象。
2021-05-17 19:07:09

他们是两个不同的东西..

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

{}正在声明一个新对象:
给定,一个带有名称和类型+值的字段的对象,
有些人喜欢将其视为“关联数组”。但在它们的表示中不是数组。

你可以阅读更多@这篇文章