[‘1‘, ‘2‘, ‘3‘].map(parseInt) what & why ?

    科技2024-03-13  80

    第一眼看到这个题目的时候,脑海跳出的答案是 [1, 2, 3],但是真正的答案是**[1, NaN, NaN]。**

    首先让我们回顾一下,map函数的第一个参数callback: var new_array = arr.map(function callback(currentValue[, index[, array]]) { // Return element for new_array }[, thisArg]) 1.这个callback一共可以接收三个参数,其中第一个参数代表当前被处理的元素,而第二个参数代表该元素的索引,第三个是当前接受遍历的数组。

    2.而parseInt则是用来解析字符串的,使字符串成为指定基数的整数。parseInt(string, radix) 接收两个参数,第一个表示被处理的值(字符串),第二个表示为解析时的基数,最后解析为10进制

    这个radix默认为十,如果小于2或者大于36,会返回NAN。 或者在radix为 undefined,或者radix为 0 或者没有指定的情况下, 如果字符串 string 以"0x"或者"0X"开头, 则基数是16 (16进制). 如果字符串 string 以"0"开头, 基数是8(八进制)或者10(十进制),基于浏览器决定,所以最好都是要给

    parseInt(‘1’, 0) //radix为0时,且string参数不以“0x”和“0”开头时,按照10为基数处理。这个时候返回1 parseInt(‘2’, 1) //基数小于2,无法解析,返回NaN parseInt(‘3’, 2) //基数为2(2进制)二进制中,最大的数不超过2,无法解析,返回NAN map函数返回的是一个数组,所以最后结果为[1, NaN, NaN]

    Processed: 0.013, SQL: 8