今天在控制台输入了以下代码
咦?!为什么会返回1呢?这难道不是吧13这个数转换为2进制返回么?
这引起了我的兴趣,接着我又输入了以下代码
这特么为啥?!
翻阅资料之后我得知
- parseInt接受到参数之后,会对第一个参数进行解析
- 比如说第一个参数是345,那么就把这个数拆成3和4和5
- 拿上3和4和5去跟参数2做对比
- 参数2是一个进制数,去看参数1的每一位数是否在参数2的最大值之内
- 比如说2进制最大值为1,3进制最大值为2,依此类推。参数2最大值为36
- 如果发现任意一位数不在参数2的限制之内,则不在往下看了,只取前面几位符合规则的数字进行计算
计算规则
还是直接上例子吧
第1
-
把46拆分为4和6
-
查看4是否在7进制的最大值(6)之内
-
查看6是否在7进制的最大值之内
-
进行计算
-
返回34
第2
- 把99拆分为9和9
- 查看9是否在5进制的最大值(4)之内
- 9前面没有数字,无法计算
- 返回NaN
第3
-
把5和9拆分为5和9
-
查看5是否在6进制的最大值(5)之内
-
查看9是否在6进制的最大值之内
-
9不在,只拿数字5进行运算
-
计算
-
-
返回5
第4
- 把2345拆分为2,3,4,5
- 查看2是否在7进制的最大值(6)之内
- 查看3是否在7进制的最大值之内
- 查看4是否在7进制的最大值之内
- 查看5是否在7进制的最大值之内
- 开始计算
- 返回结果