使用array.map填充数组的值

时间:2016-05-25 03:10:13

标签: javascript arrays array-map

我正在尝试理解使用Array.map()

的代码
var char_set = Array.apply(null, Array(256)).map(Boolean.prototype.valueOf, false); 

上面的代码创建了一个包含0-255索引的数组,每个值都设置为false

有人可以解释如何使用此map方法创建此数组。 map方法的语法是

arr.map(callback[, thisArg])

在我的情况下,thisArg设置为false

1 个答案:

答案 0 :(得分:4)

Array.apply(null, Array(256)):将创建256个元素的数组,其中所有元素的值都未定义

map(…):用于将所有值初始化为false

map中的第一个参数采用回调函数; Boolean.prototype.valueOf是一个充当回调的函数。

true.valueOf()返回true,但必须使用thisArg调用它 |
---------- true是thisArg

false.valueOf()返回false,但必须使用thisArg调用它 |
---------- false是thisArg

当为数组中的每个元素调用map(Boolean.prototype.valueOf, false)时,它会将false作为this传递给Boolean.prototype.valueOf方法。它与调用false.valueOf()一样好,因此它总是返回false

因此map(Boolean.prototype.valueOf, false)相当于:
map(function(item){ return false.valueOf() });