什么's是Array.of(n)、Array(n)和Array=[n]之间的差值
What's is the difference between Array.of(n) , Array(n) and array = [n]?
作为标题,我想知道这3种初始化数组的方法之间有什么区别。
实际上,我对ES6提供的新Array.of()方法更感兴趣,为什么他们觉得需要实现它?
数组构造函数可以用两种方式调用:一个用作数组元素值的值列表,或者用一个给定初始长度的数值:
var myArray = new Array("hello", "world"); // 2 elements
var otherArray = new Array(100); // 100 elements, all empty
因为当只传递一个数字时会有歧义,所以旧的API被认为设计得很糟糕。因此,有了Array.of()
,它与Array构造函数的第一个选项相同:
var otherArray = Array.of(100); // 1 element
制作数组的第三种方法是使用数组初始化表达式:
var otherArray = [100]; // 1 element
以上每个创建的数组实例在功能上是等效的,并且可以完全互换。
还有一件事:既然我们可以使用数组初始化表达式,为什么Array.of()
必须存在?Array.of()
是一个函数,所以它可以用作函数式编程中的一个值。您可以(作为一个有点愚蠢的例子)使用复制数组
var copy = Array.of.apply(Array, original);
一个愚蠢的原因是(在ES2015中)Array.from()
也可以做同样的事情:
var copy = Array.from(original);
这适用于任何类型的可迭代原始,因此它是将arguments
或NodeList转换为数组的好方法。
MDN站点有关于Array.of()
的文档。构造函数和数组初始值设定项形式已经存在了很久,所以任何JavaScript引用都会覆盖它们(尽管可能没有引用Array.of()
)。
Array.of(2)
将创建一个包含元素2的数组。
var temp = Array.of(2); // temp = [2]
Array(2)
将创建一个由2个元素组成的数组。
var temp = new Array(2); // temp = [undefined, undefined]
CCD_ 10将创建具有元素2的数组。
var temp = [2]; // temp = [2]
相关文章:
- 函数参数中的数据与指定变量之间的任何性能差异
- 全局变量和全局对象的属性之间有什么区别吗
- java.net和javascript之间正则表达式的差异
- 如何为json对象中的段发送array[]
- JavaScript中的函数和对象之间没有区别吗?
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- Jquery在函数之间传递表行
- 根据某些条件在视图之间切换
- 在控制器和数据对象之间同步数据
- d3中堆栈函数和嵌套函数之间的差异
- Array.length似乎不起作用;console.log则显示其他情况
- Array.indexOf 或介于两者之间
- for(数组中的i)和for(var i=0;i<array.length;i++)之间的差异
- 在JavaScript中,什么's myArray.length=0与myArray=new Array()之间
- 什么's是Array.of(n)、Array(n)和Array=[n]之间的差值
- 什么's(数组中的x)和(i=0;i<array.length;i++)之间的差值
- a = [未定义] 和 a = new Array(1) 之间的区别
- 在这种情况下,array.push和array.splice之间的区别
- Javascript-在不使用Array.prototype.filter的情况下,根据键值获取两个对象数组之间的差异
- 什么'Array(2)和[未定义,未定义]之间的区别是什么