【问题标题】:Initialize Array with default value用默认值初始化数组
【发布时间】:2017-02-01 22:12:02
【问题描述】:

我在看this answer,偶然发现需要 Array.apply 来填充数组:

var array = Array.apply(null, Array(5)).map(function() { return 0; });

我已经检查过了,这实际上不起作用:

var array = Array(5).map(function() { return 0; });

我知道我能做到

var array = Array(5).fill(0);

为了获得与第一种方法相同的结果,我只是想知道为什么它需要带有 null 作为参数的 Array.apply。

【问题讨论】:

  • 你理解var array = Array(5)做什么?
  • 你也可以用Array.from()代替Array().map()

标签: javascript


【解决方案1】:

Apply.apply(thisArg, [argsArray]) 有两个参数

thisArg

为乐趣的调用提供了 this 的价值。请注意,这可能不是 是方法看到的实际值:如果方法是一个函数 非严格模式代码,null 和 undefined 将被替换为 全局对象,原始值将被装箱。

argsArray

一个类似数组的对象,指定 fun 应该使用的参数 被调用,如果不应该提供参数,则为 null 或 undefined 函数。

详情visit

【讨论】:

  • 我认为(至少,我认为)apply 的作用是什么,我只是无法弄清楚它在这种情况下的作用。 Boxing Array(5)(就是一个长度为 5 的空数组)将其转换为 5 个“未定义”参数,对吧?
猜你喜欢
  • 2014-05-06
  • 1970-01-01
  • 2014-11-30
  • 2015-02-25
  • 1970-01-01
  • 2014-12-29
  • 1970-01-01
  • 2020-02-08
  • 2017-11-22
相关资源
最近更新 更多