javascript – Array.apply(null,Array(x))和Array(x)之间的区别
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – Array.apply(null,Array(x))和Array(x)之间的区别,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1286字,纯文字阅读大概需要2分钟。
内容图文
![javascript – Array.apply(null,Array(x))和Array(x)之间的区别](/upload/InfoBanner/zyjiaocheng/709/2c3e971d30864343861085ace68d3414.jpg)
究竟有什么区别:
Array(3)
// and
Array.apply(null, Array(3) )
第一个返回[undefined x 3],而第二个返回[undefined,undefined,undefined].第二个可以通过Array.prototype.functions链接,例如.map,但第一个不是.为什么?
解决方法:
有一个区别,一个相当重要的区别.
Array构造函数接受一个数字,给出数组的长度,并创建一个带有“空”索引的数组,或者更正确地设置长度但数组实际上不包含任何内容
Array(3); // creates [], with a length of 3
当使用数字作为唯一参数调用数组构造函数时,您将创建一个空的数组,并且无法使用常用的Array方法进行迭代.
或者…… Array构造函数接受多个参数,而创建一个数组,其中每个参数都是数组中的值
Array(1,2,3); // creates an array [1,2,3] etc.
当你打电话给这个
Array.apply(null, Array(3) )
它变得更有趣了.
apply接受这个值作为第一个参数,因为它在这里没用,所以它被设置为null
有趣的部分是第二个参数,其中传入一个空数组.
由于apply接受一个数组,它就像调用一样
Array(undefined, undefined, undefined);
并创建一个三个索引不是空的数组,但实际上将值设置为undefined,这就是为什么它可以迭代.
TL; DR
主要区别在于Array(3)创建了一个三个索引为空的数组.实际上,它们并不存在,数组的长度只有3.
使用apply将带有空索引的数组传递给Array构造函数与执行Array(undefined,undefined,undefined);相同,它创建一个包含三个未定义索引的数组,而undefined实际上是一个值,所以它不是空的就像在第一个例子中一样.
像map()这样的数组方法只能迭代实际值,而不是空索引.
内容总结
以上是互联网集市为您收集整理的javascript – Array.apply(null,Array(x))和Array(x)之间的区别全部内容,希望文章能够帮你解决javascript – Array.apply(null,Array(x))和Array(x)之间的区别所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。