使用 array.map 填充数组的值

fill in the values of an array using the 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

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

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

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

true.valueOf() returns true 但必须用 thisArg 调用。
|
---------- thisArg

是真的

false.valueOf() returns false 但必须用 thisArg 调用。
|
---------- false 是 thisArg

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

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