2020重学前端parseInt

  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

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

时间: 2024-10-29 05:03:48

2020重学前端parseInt的相关文章

重学前端

先来看个大纲 整个系列包含三个部分,即构建Web应用程序或页面要用的最基本的三部分:HTML.CSS和JavaScript. HTML部分 HTML语义:只用div和span是不是就够了? HTML语义:一篇wiki文章究竟会用到哪些语义元素? 文档元信息:你知道head里一共能写哪几种标签吗? 链接:除了a标签,还有标签叫链接? 嵌入型元素:怎么link一个CSS要用href,而引入JS要用src呢? HTML标签:标签总结 HTML语言:dtd到底是什么? ARIA:可访问性不止是给盲人用户

重学前端-块格式化上下文

块格式化上下文 块格式换上下文:(Block Formatting Content,BFC),页面中独立的块级渲染区域,该区域有一套渲染规则,用来约束块级盒子的布局,与本区域外无关. 触发BFC的条件 浮动元素 overflow: hidden/auto/scroll 绝对定位属性的元素(position: absolute/fixed) display: inline-block/table-cell/table-caption ... BFC可以解决的问题 margin重叠 浮动导致的高度塌

谷哥的小弟学前端(07)——CSS基础知识(5)

探索Android软键盘的疑难杂症 深入探讨Android异步精髓Handler 详解Android主流框架不可或缺的基石 站在源码的肩膀上全解Scroller工作机制 Android多分辨率适配框架(1)- 核心基础 Android多分辨率适配框架(2)- 原理剖析 Android多分辨率适配框架(3)- 使用指南 自定义View系列教程00–推翻自己和过往,重学自定义View 自定义View系列教程01–常用工具介绍 自定义View系列教程02–onMeasure源码详尽分析 自定义View

重学Linux - 链接文件

目录 重学Linux - 链接文件 重学Linux - 链接文件 @ @auther 张念磊 @date 2020/1/30 ln命令 命令英文:link 功能:创建一个链接 语法:ln [源文件] [生产的链接文件] 参数: ? -s 生成软连接 示例: ln -s /etc/issue /tmp/issue.soft ln /etc/issur /tmp/issue.hard 软连接文件的特点 权限 文件大小 箭头 硬链接特征 拷贝 cp -p + 实时同步 不能跨分区 使用i节点 不能针对

重学ps_1

1,选取 打开图片->点击选取工具->ctrl+c->ctrl+n->ctrl+v 2,去除图片背景 打开你要去除背景的图片->在图层面板中->双击图层把图层改为0层->用魔棒点击背景->然后点击delete键->最后将图片存储为png格式 如果存为jpg他会默认添加背景 3,改变图片上文字的颜色 打开要改变的图片->选择快速工具->在你要改变的文字上点击一下->然后在点击油漆桶工具->在选择你想要改变的颜色->然后点击文

重学html

html是描述网页结构的标记语言. 1.html中标记是由尖括号和标记名组成,例如:<h1>,一个元素是指开始标记.闭合标记和他们之间的内容组成,例如:<h1>北京</h1> 2.很多时候,我们用html创建的网页在浏览器中运行的时候,会利用浏览器自带的默认样式来表现结构. 3.css级联样式表,用来描述如何表现内容. <style type="text/css">   <!--type告诉浏览器你所使用的样式的种类--> &

重学线代——声明篇

为啥重学线代呢? 1.当初学得模棱两可,时间长了啥也没剩下 2.越来越发现线代很流弊,很有用(不只是线代,各门数学都有此感触) 3.比较巧合地在网络上发现了个很好的线代教学资源 4.假期浪费了太可惜了 你这堆博客要写点啥呢? 课程笔记.个人领悟.无知吐槽.等等等等 你还想说点啥么? 没了 哦 恩

重学C++ (1)

写在开头的话:这学期没有写太多的代码,终于把中英文两篇论文弄完了,趁着中间的空隙,想想找工作的处境.自己也定了自己的方向.不管学什么语言吧,每个语言都有自己的优势和使用的群体.只要自己是良马,终会有伯乐赏识. 定的标题为“重学C++” 本人之前使用C++基本上用作算法编写,MFC界面的学习编写,集成OpencV进行图像处理的项目开发或者论文实验 总的来说,能处理基本问题.但是远不能达到灵活的地步.所以下载了两本书<effective C++>和<effective STL>我希望能

C#&amp;java重学笔记(函数)

C#部分  1.写在函数定义的()中的关键字: a.params关键字:用来满足函数的参数为数组时,而数组的长度不固定的情况.且该关键字只能用来修饰数组型参数.这样一修饰,就达成了类似JavaScript函数书写参数的特点. b.ref关键字:让参数按引用传递,类似于C中的传指针参数.比如经典的数值交换函数,你传形参和传指针的结果应该知道,加了ref关键字就相当于传指针.注意:ref只接收变量做参数,你字面量怎么弄指针?而且该变量必须初始化!     c.out关键字:功能和ref一样,区别在于