['1', '2', '3'].map(parseInt)

这道题大家应该经常会碰到,我们打印一下结果


控制台打印

想要彻底弄懂同类型的题,我们必须先弄懂map,parseInt

map
array.map(function(currentValue, index, arr), thisValue)

参数解析:

  • item:第一个参数,数组中正在处理的当前元素(必选)
  • index:第二个参数,数组中正在处理的当前元素的索引(可选)
  • thisArr:第三个参数,map 方法被调用的数组(可选)
  • thisValue:对象作为该执行回调时使用,传递给函数,用作 "this" 的值(可选)
parseInt
// radix进制的由数字组成的字符串 string 转换为 10 进制的整数
parseInt(string, radix)

参数解析:

  • string:要被解析的字符串(必选)
  • radix:要解析的数字的基数。该值介于 2 ~ 36 之间(可选)

radix详解:

  • 如果radix值为 0,则数字将以 10 为基础来解析
  • 如果radix小于 2 (!==0)或者大于 36,则 parseInt() 将返回 NaN
  • 没有设置该参数时,如果string以 “0x” 或 “0X” 开头,将以 16 为基数
  • 没有设置该参数时,如果 string 以 0 开头,转换为8进制或十进制
  • 没有设置该参数时,如果 string 以 1 ~ 9 开头,将以 10 为基数
  • 如果string超出radix的表示范围,则返回NaN

实践

['1', '2', '3'].map(parseInt)
// 等同于
['1', '2', '3'].map((item, index) => {
    return parseInt(item ,index)
})
parseInt('1', 0) // 1 ===> radix值为 0,则数字将以 10 为基础来解析
parseInt('2', 1) // NaN ===> radix小于2,返回NaN
parseInt('3', 2) // NaN ===> string超出radix的表示范围,返回NaN

parseInt('10', 9) // 9 ===> 1 * 9 ^ 1 + 0 * 9 ^ 0 = 9 
parseInt("17", 8) // 15 ===> 1 * 8 ^ 1 + 7 * 8 ^ 0 = 15
parseInt("1f", 16) // 31 ===> 16 + 15
parseInt(' 12x') // 12 ===> 开头和结尾的空格是允许的
parseInt('s90') // NaN ===> 如果字符串的第一个字符不能被转换为数字,那会返回 NaN
parseInt(' 12abc!6') // 12 ===> 只有字符串中的第一组数字会被返回

你可能感兴趣的:(['1', '2', '3'].map(parseInt))