不懂就问,对数组操作时,返回所有真值用 testArray.map(Boolean) 是什么写法
source link: https://www.v2ex.com/t/797720
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
zhw2590582 21 小时 19 分钟前 1
supuwoerc 21 小时 15 分钟前 1
Leviathann 21 小时 1 分钟前 via iPhone
Bechbaliq 20 小时 56 分钟前
DICK23 19 小时 23 分钟前 1
shyling 19 小时 22 分钟前 1
Mexion 19 小时 13 分钟前 1
mxT52CRuqR6o5 19 小时 9 分钟前 1
Bechbaliq 18 小时 30 分钟前 via Android
libook 2 小时 26 分钟前 1
JS 是弱类型语言,可以参考“鸭子类型”的理论。
你以后遇到类似的问题,可以按照如下步骤来探究:
(一)
疑问在于 map 方法的参数上,所以可以去 MDN 上看 Array.prototype.map 方法的参数是什么: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map
可以看到 map 有 2 个参数,你的例子只传了第一个参数,也就是 map 的 callback 参数,map 会往 callback 函数里传三个参数,也就是说 Boolean 函数会接收到 map 传进来的三个参数。
不要被 Boolean 这个名字迷惑到,给 map 传任何 callback 都是这样的写法,你自己写一个 funcA,也是同样的写法传给 map,如 testArray.map(funA),JS 里名称的大小写没有特殊的特性区别。
(二)
看看 Boolean 是什么,同样去 MDN 上查: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Boolean
看来 Boolean 本身是一个函数,只有一个参数,会返回一个布尔型数据。(而且文档也特意说明了,Boolean 函数和 Boolean 构造函数是两回事,特性不一样,所以换成 new Boolean 会得到不一样的结果)
(三)
所以 map 传给 Boolean 函数的三个参数中,Boolean 函数只会用到第一个,也就是 callback 数组中正在处理的当前元素。
Boolean 会将这个参数转换成一个布尔型数据返回给 map 。
(四)
回过头来看 map 的文档,看看 map 是如何处理 callback 返回的数据的,“callback 每次执行后的返回值(包括 undefined )组合起来形成一个新数组。”
那么结果就很清晰了:map 方法会把数组中的每个元素拿出来传给 Boolean 函数,转换成布尔型数值,然后把结果组成一个新数组。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK