web前端常见问题2【['1','2','3'].map(parselnt)】

先说结果:[1, NaN, NaN]

 

这个问题主要考察的是map() 和 parselnt()

map()语法

array.map(callback(currentValue, index, arr), thisValue)
  • callback :表示对数组中的每个元素要执行的函数。该函数包含三个参数:
  1. currentValue:表示正在处理的当前元素。
  2. index:可选参数,表示正在处理的当前元素的索引。
  3. arr:可选参数,表示正在处理的当前数组。
  • thisValue:可选参数,表示执行 callback 函数时的 this 值

parseInt()语法

parseInt(string, radix)

parseInt() 函数解析字符串并返回十进制整数。

radix 参数用于指定使用哪种数字系统,例如基数为 16(十六进制)表示字符串中的数字应从十六进制数解析为十进制数。范围【2,36】

如果 radix 参数被省略,JavaScript 假定如下:

  • 如果字符串以 "0x" 开头,则基数为 16(十六进制)
  • 如果字符串以 "0" 开头,则基数为 8(八进制)。此特性已弃用
  • 如果字符串以任何其他值开头,则基数为 10(十进制)

注释:如果第一个字符不能转换为数字,parseInt() 返回 NaN。如果参数为0,那么就是通过十进制来进行转换 ,参数如果 小于2,或者大于36 ,返回NaN

 

可以看到,map()方法有两个参数,其中第一个参数是个callback函数,此函数有三个参数currentValue、index、arr,而parseInt作为一个内置函数,有两个参数string、radix

['1','2','3'].map(parselnt) 实质上,就是 parseInt(string, radix) 分别接受callback的前两个参数当前值currentValue和index,第三个参数无效,因此不接收,因此:

  ['1','2','3'].map(function (item, index, array) {
      return parselnt(item, index, array)
  });

实际执行如下:

parselnt('1',0);    // 1     radix 0 默认以十进制转十进制,返回1
parselnt('2',1);    // NaN   radix 1 小于radix的最小值2,返回NaN
parselnt('3',2);    // NaN   radix 2 表示以二进制解析为十进制,但3明显不是二进制的数,因此解析失败,返回NaN

 

posted @ 2024-04-02 09:45  我家有只喵  阅读(1)  评论(0编辑  收藏  举报