数组和[]之间的区别

时间:2014-06-19 18:20:35

标签: javascript

阅读编辑部分,问题无效

Array对象有一个reduce和其他方法,而[]则没有。所以Array和[]都是部分不同的类型(因为javascript没有类型,所以类型是正确的单词)。

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

如果对象 b 是数组,应该将对象 a 表示为什么(表示为右词?)为。

编辑:

依靠节点控制台自动完成的道歉,得出了" []"没有减少方法。

我输入Array.prototype.red<tab>列出了reduce方法。

[].red<tab>未列出reduce方法的地方。

请投票结束此问题。

2 个答案:

答案 0 :(得分:2)

实际上,它们是相同的,但当只有一个整数作为new Array的参数给出时,有一个特例。

var arrayBrackets = [1, 2, 3],
    arrayWithNew = new Array(1, 2, 3),
    arrayWithNewSingle = new Array(3)

console.log(arrayBrackets)      // [1, 2, 3]
console.log(arrayWithNew)       // [1, 2, 3]
console.log(arrayWithNewSingle) // [undefined, undefined, undefined]

请参阅Mozilla Developer Network for Array

答案 1 :(得分:1)

Javascript中的某些数据类型具有原始形式,如字符串和数字。基元和相应的对象不相同,但是当您将方法应用于需要它作为对象的基元时,基元值会自动转换为对象。像42这样的数字只是一个数字值,但您可以随时使用(42).toString(),这会自动创建一个可以应用该方法的Number对象。

然而,数组没有原始值。数组文字[]的结果是一个数组对象,就像从new Array();返回的数组对象一样。两者从一开始就是完整的对象,在两种创建数组的方式的结果中完全没有区别。


但是,使用这两种方法创建数组存在差异。如果将数组构造函数与单个数字参数一起使用,它将创建一个具有该长度的数组,否则它将创建一个包含您调用它的项的数组。您也可以省略对象文字中的项目,例如[,,,1,2,,3,,],这将在数组中创建未定义的项目。