Javascript 数组(0)和数组=[]之间的区别是什么

Javascript 数组(0)和数组=[]之间的区别是什么,javascript,arrays,data-structures,Javascript,Arrays,Data Structures,使用数组(0)和数组=[]创建数组之间有什么区别 据我所知,两者都是空数组对象 array >>> [] Array(0) >>> [] 但当我比较它们时,它们返回“false” var array = [] array === Array(0) >>> false 这是怎么回事 据我所知,两者都是空数组对象 array >>> [] Array(0) >>> [] 是的 但当我比较它们时,它们返回“

使用数组(0)和数组=[]创建数组之间有什么区别

据我所知,两者都是空数组对象

array
>>> []
Array(0)
>>> []
但当我比较它们时,它们返回“false”

var array = []
array === Array(0)
>>> false
这是怎么回事

据我所知,两者都是空数组对象

array
>>> []
Array(0)
>>> []
是的

但当我比较它们时,它们返回“false”

var array = []
array === Array(0)
>>> false
当您比较JavaScript中的两个对象时,您正在测试它们是否是相同的对象,而不是相同的对象

据我所知,两者都是空数组对象

array
>>> []
Array(0)
>>> []
是的

但当我比较它们时,它们返回“false”

var array = []
array === Array(0)
>>> false
当您在JavaScript中比较两个对象时,您是在测试它们是否是相同的对象,而不是它们是否是相同的对象。

2数组(即使是空的)不能以这种方式进行比较,也不能相等

以下是如何正确比较两个阵列的答案:

2个数组(即使是空的)不能以这种方式进行比较,也不能相等

以下是如何正确比较两个阵列的答案:

因为数组是对象,而不是原语:

var x=5;//原始的
变量y=5;//原始的
console.log(x==y);//真的
变量x=[5];//对象
变量y=[5];//对象
console.log(x==y);//假的
变量x='5';//原始的
变量y='5';//原始的
console.log(x==y);//真的
变量x={0:5};//对象
变量y={0:5};//对象

console.log(x==y);//错误
,因为数组是对象,而不是原语:

var x=5;//原始的
变量y=5;//原始的
console.log(x==y);//真的
变量x=[5];//对象
变量y=[5];//对象
console.log(x==y);//假的
变量x='5';//原始的
变量y='5';//原始的
console.log(x==y);//真的
变量x={0:5};//对象
变量y={0:5};//对象
console.log(x==y);//错误
这两种方法都以相同的方式创建空数组

var p = Array(3); //[undefined, undefined, undefined]
您也可以使用以下方法执行此操作:

var p = [undefined, undefined, undefined];
同样,两者在内部工作方式相同,但用例不同:

例如,如果要创建包含n个元素的数组:

var array = new Array(n) // [undefined * n]
如果要在创建时初始化数组的值,请执行以下操作:

var arry = [1,2,3,4];
这里需要注意的一点是,您还可以使用
new array()
创建一个初始化数组:

var p = new Array(1,2,3,4); // [1,2,3,4]
但当您尝试使用一个初始化值创建数组时,它会使用该参数并创建一个该大小的数组:

var p = new Array(4)  // [undefined*4]
这两种方法都以相同的方式创建空数组

var p = Array(3); //[undefined, undefined, undefined]
您也可以使用以下方法执行此操作:

var p = [undefined, undefined, undefined];
同样,两者在内部工作方式相同,但用例不同:

例如,如果要创建包含n个元素的数组:

var array = new Array(n) // [undefined * n]
如果要在创建时初始化数组的值,请执行以下操作:

var arry = [1,2,3,4];
这里需要注意的一点是,您还可以使用
new array()
创建一个初始化数组:

var p = new Array(1,2,3,4); // [1,2,3,4]
但当您尝试使用一个初始化值创建数组时,它会使用该参数并创建一个该大小的数组:

var p = new Array(4)  // [undefined*4]

@tkim90,我猜是因为在
数组(0)
中有一个
0
,它被认为是第一个元素,而空
[]
总是表示空数组?这是因为
[]==[]=>false
@user273072545345
数组(0)
表示一个空数组,而不是以
0
作为第一个元素的数组。@tkim90,我猜因为
数组(0)
中有一个
0
,所以它被认为是第一个元素,而不是总是表示空数组的空
[]
数组?这是因为
[]=>false
@user273072545345
数组(0)
表示空数组,而不是第一个元素为
0
的数组。感谢链接,非常有用谢谢链接,非常有用最后一个示例可以使用
var a=new Array(1,2,3,4)完成也是。是的,如果要以相同的方式创建一个包含一个元素的数组,您也可以这样做。对于ex:var p=new Array(4),这将创建4个未定义值的数组。是的,这是一个区别。最后一个示例可以使用
var a=new Array(1,2,3,4)完成也是。是的,如果要以相同的方式创建一个包含一个元素的数组,您也可以这样做。对于ex:var p=newarray(4),这将创建4个值为未定义的数组。是的,这是一个区别。