你不知道的parseInt

今天在控制台输入了以下代码
在这里插入图片描述
咦?!为什么会返回1呢?这难道不是吧13这个数转换为2进制返回么?
这引起了我的兴趣,接着我又输入了以下代码
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这特么为啥?!
翻阅资料之后我得知

  • parseInt接受到参数之后,会对第一个参数进行解析
  • 比如说第一个参数是345,那么就把这个数拆成3和4和5
  • 拿上3和4和5去跟参数2做对比
  • 参数2是一个进制数,去看参数1的每一位数是否在参数2的最大值之内
  • 比如说2进制最大值为1,3进制最大值为2,依此类推。参数2最大值为36
  • 如果发现任意一位数不在参数2的限制之内,则不在往下看了,只取前面几位符合规则的数字进行计算

计算规则
还是直接上例子吧
第1
在这里插入图片描述

  1. 把46拆分为4和6

  2. 查看4是否在7进制的最大值(6)之内

  3. 查看6是否在7进制的最大值之内

  4. 进行计算运算:6乘以7的0次方加上4乘以7的1次方

  5. 返回34

第2
在这里插入图片描述

  1. 把99拆分为9和9
  2. 查看9是否在5进制的最大值(4)之内
  3. 9前面没有数字,无法计算
  4. 返回NaN

第3
在这里插入图片描述

  1. 把5和9拆分为5和9

  2. 查看5是否在6进制的最大值(5)之内

  3. 查看9是否在6进制的最大值之内

  4. 9不在,只拿数字5进行运算

  5. 计算

  6. 在这里插入图片描述

  7. 返回5

第4
在这里插入图片描述

  1. 把2345拆分为2,3,4,5
  2. 查看2是否在7进制的最大值(6)之内
  3. 查看3是否在7进制的最大值之内
  4. 查看4是否在7进制的最大值之内
  5. 查看5是否在7进制的最大值之内
  6. 开始计算在这里插入图片描述
  7. 返回结果

猜你喜欢

转载自blog.csdn.net/m0_47883103/article/details/108352227