码迷,mamicode.com
首页 > 其他好文 > 详细

2020重学前端parseInt

时间:2020-01-08 23:22:34      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:ring   style   math   数字   解释   参数   map   没有   时间   

  2010年就开始学前端,最早使用parseInt这个函数已经不记得具体时间了,在我的概念里对它的使用了解是parseInt(string, radix);把string转成数字,radix参数是把数字以多少进制表示出来,一直到今天我99.99%的情况使用场景都是radix等于10,而且也没出现过什么问题。但是最近遇到一个题目[‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘].map(parseInt)我竟然不能很准确的写出正确答案。所以我今天要重新学习一下这个方法了,在认真研究这个方法的时候,还没有想象中的那么容易,下面先看一下这个方法的解释

 技术图片

radix取值范围每个具体的值对应关系是:

2 - [0, 1],3 - [0, 1, 2],10 - [0, 1, ..., 9],11 - [0, 1, ..., 9, a], 36 - [0, ..., a, ..., Z]

[‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘].map(parseInt)相当于[‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘].map((cur, index) => parseInt(cur, index));

cur和index的对应关系以及对结果的分析如下:

parseInt(‘1‘, 0); // 0 和 10相当于10进制

parseInt(‘2‘, 1); // 如果该参数小于2或者大于36,则 parseInt将返回 NaN

parseInt(‘3‘, 2); // 2进制的取值范围是0 1没有3,所以返回NaN

parseInt(‘4‘, 3); // 3进制的取值范围是0 1 2没有4,所以返回NaN

parseInt(‘5‘, 4); // 4进制的取值范围是0 1 2 3没有5,所以也返回NaN

其他情况:

parseInt(‘256‘, 3); // 3进制的取值范围是0 1 2没有56,所以返回2

parseInt(‘234‘, 5); // 4进制的取值范围是0 1 2 3,返回69

parseInt在确定被解析的值在radix取值的范围后,还会进行最后一步计算,计算规则如下

比如parseInt(‘234‘, 5);

2 * Math.pow(5, 2) + 3 * Math.pow(5, 1) + 4 * Math.pow(5, 0);  // 运行结果为69

 

参考链接https://www.cnblogs.com/webBlog-gqs/p/8727677.html

 

2020重学前端parseInt

标签:ring   style   math   数字   解释   参数   map   没有   时间   

原文地址:https://www.cnblogs.com/typeof/p/12168571.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!