阅读编辑部分,问题无效
Array对象有一个reduce和其他方法,而[]则没有。所以Array和[]都是部分不同的类型(因为javascript没有类型,所以类型是正确的单词)。
var a = [];
var b = new Array();
如果对象 b 是数组,应该将对象 a 表示为什么(表示为右词?)为。
编辑:
依靠节点控制台自动完成的道歉,得出了" []"没有减少方法。
我输入Array.prototype.red<tab>
列出了reduce方法。
[].red<tab>
未列出reduce方法的地方。
请投票结束此问题。
答案 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]
答案 1 :(得分:1)
Javascript中的某些数据类型具有原始形式,如字符串和数字。基元和相应的对象不相同,但是当您将方法应用于需要它作为对象的基元时,基元值会自动转换为对象。像42
这样的数字只是一个数字值,但您可以随时使用(42).toString()
,这会自动创建一个可以应用该方法的Number
对象。
然而,数组没有原始值。数组文字[]
的结果是一个数组对象,就像从new Array();
返回的数组对象一样。两者从一开始就是完整的对象,在两种创建数组的方式的结果中完全没有区别。
但是,使用这两种方法创建数组存在差异。如果将数组构造函数与单个数字参数一起使用,它将创建一个具有该长度的数组,否则它将创建一个包含您调用它的项的数组。您也可以省略对象文字中的项目,例如[,,,1,2,,3,,]
,这将在数组中创建未定义的项目。