使用 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() });
我正在尝试理解这段使用 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() });