ParseInt 你真的会用吗?

112 阅读1分钟

直接上菜:

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

上述代码 返回什么?

我先放答案[1,NaN,NaN]

本题考了两个知识点

  • map
  • parseInt

1.Array.map(fun) 是一个数组方法,它接收一个函数作为参数,并使用该函数对数组的每个元素进行操作,并返回一个新的数组,其中包含操作后的结果。

2.parseInt() 函数解析字符串参数并返回指定基数(数学数字系统中的基数)的整数。

语法 parseInt(string, radix)

image.png

参数radix存在三种情况

  1. 超出范围(2,36) ;直接返回NaN
  2. 0,undefined,null 会自动转换,转换规则如下
  • 0x开头; 转换16进制.
  • 0开头; 转换为8进制/10进制,10进制优先.
  • 10开头; 0-9 会默认使用10进制.
  1. 使用指定的进制进行转换

因此上述的题目就一目了然了

console.log(['1','2','3'].map(parseInt)) // 可以转换为
console.log([parseInt('1',0),parseInt('2',1),parseInt('3',2)])
// 答案为  [1,NaN,NaN]

强烈建议大家在使用parseInt这个函数时,带上第二个参数 parseInt(str,radix)