面试题 ['1', '2', '3'].map(parseInt) 的解析

['1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11'].map(parseInt)

首先是map函数

语法

array.map(function(currentValue,index,arr), thisValue)
复制代码

参数说明

参数描述
function(currentValue, index,arr)必须。函数,数组中的每个元素都会执行这个函数
函数参数:
参数描述
currentValue必须。当前元素的值
index可选。当前元素的索引值
arr可选。当前元素属于的数组对象
thisValue可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
如果省略了 thisValue,或者传入 null、undefined,那么回调函数的 this 为全局对象。

parseInt()

定义和用法

parseInt() 函数可解析一个字符串,并返回一个整数。

当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。

当忽略参数 radix , JavaScript 默认数字的基数如下:

  • 如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
  • 如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。
  • 如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。

语法

parseInt(string, radix)
复制代码

参数说明

参数描述
string必需。要被解析的字符串。
radix可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。

parseInt(string, radix) 这个函数可以理解为 radix 进制的由数字组成的字符串 string 转换为 10 进制的整数

了解这两个函数后,我们可以模拟一下运行情况

  1. parseInt('1', 0) //radix为0时,且string参数不以“0x”和“0”开头时,按照10为基数处理。这个时候返回 1 * 10 ^ 0 = 1

  2. parseInt('2', 1) //基数为1(1进制)表示的数中,最大值2大于基数1,所以无法解析,返回NaN

  3. parseInt('3', 2) //基数为2(2进制)表示的数中,最大值3大于基数2,所以无法解析,返回NaN

  4. parseInt('4', 3) //基数为3(3进制)表示的数中,最大值4大于基数3,所以无法解析,返回NaN

  5. parseInt('5', 4) //基数为4(4进制)表示的数中,最大值5大于基数4,所以无法解析,返回NaN

  6. parseInt('6', 5) //基数为5(5进制)表示的数中,最大值6大于基数5,所以无法解析,返回NaN

  7. parseInt('7', 6) //基数为6(6进制)表示的数中,最大值7大于基数6,所以无法解析,返回NaN

  8. parseInt('8', 7) //基数为7(7进制)表示的数中,最大值8大于基数7,所以无法解析,返回NaN

  9. parseInt('9', 8) //基数为8(8进制)表示的数中,最大值9大于基数8,所以无法解析,返回NaN

  10. parseInt('10', 9) //直到基数为9(9进制)表示的数中,返回1 * 9 ^ 1 + 0 * 9 ^ 0 = 9 。即一个基数为9(9进制)表示的数转换为基数为10(10进制)的值的过程。

  11. parseInt('11', 10) // 那么这条函数执行的结果自然是 11 了

欢迎到我的博客、我的github逛哦!

我的博客:blog.luyu.fun

我的github:github.com/panyu97py

转载于:https://juejin.im/post/5c6cfcc16fb9a049c0439c32

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值