资讯专栏INFORMATION COLUMN

parseInt()是什么

NervosNetwork / 2525人阅读

摘要:我今天提了个问题提完之后才发现是自己蠢了,理解不到位。如等价于等价于第二个参数可选,是你告诉这个函数,你的输入其实是几进制的,让它把这个输入转化为十进制的值。如果开头第一个就不是有效字符,直接返回。

我今天提了个问题:https://segmentfault.com/q/10...

提完之后才发现是自己蠢了,理解不到位。

parseInt(string, radix);把字符串转化为整数

第一个参数必须,是要转换为整数的字符串,如果第一个参数不是字符串,会调用toString()先转化为字符串。如parseInt(070)等价于parseInt(070.toString())等价于parseInt("56").

第二个参数可选,是你告诉这个函数,你的输入其实是几进制的,让它把这个输入转化为十进制的值。如果不写,默认为10.比如parseInt("56", 8),你告诉函数这个"56"是八进制的,让它输出十进制的数值,于是:5*8+6=46。
我理解不到位的地方,就是我以为第二个参数是告诉函数,输出应该是几进制的,我以为parseInt("56", 8)是会输出一个八进制的数,这是不对的。

那么它是怎么运作的呢?

一句话:字符串从左到右挨个遍历,每个字符必须是这个进制内的有效字符(第一位可以是负号"-"),如果不是,就停止,然后转化所有有效的字符。如果开头第一个就不是有效字符,直接返回NaN。

好像很难懂?看例子就容易明白了:

parseInt("1234blue");// 1234
parseInt("1234blue", 16);// 74571
parseInt("b123");// NaN

第一个parseInt,没有指定radix,默认为10,于是十进制的有效字符是:0123456789,所以它遍历到"b"就停止了,输出1234.

第二个parseInt,指定radix为16,十六进制的有效字符是:0123456789abcdef,所以它遍历到"l"才停止,截取的字符串是1234b,转化为十进制是74571.

另外,对于parseInt()来说,小数点不是有效字符:parseInt("22.5")// 22

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/86856.html

相关文章

  • JavaScript Puzzlers! 解惑(一):为什么 ["1", &qu

    摘要:第一题为的返回值。返回值其中的每个元素均为关联的原始数组元素的回调函数返回值的新数组。修改数组对象数组对象可由回调函数修改。方法启动后的条件元素是否传递给回调函数在数组的原始长度之外添加元素。 JavaScript Puzzlers! 被称为 javascript 界的专业八级测验,感兴趣的 jser 可以去试试。 我试了一下, 36 道题只做对了 19 道, 算下来正确率为 53%,...

    k00baa 评论0 收藏0
  • 详细解释parseInt

    摘要:举例,如果以开头,会把的其余部分解析为十六进制的整数。如果以开头,那么允许的一个实现把其后的字符解析为八进制或十六进制的数字。 [‘1’, ‘2’, ‘3’].map(parseInt)结果是什么? 我们先将代码转化成常规的样子, [‘1’,‘2’,‘3’].map(function(item, index){return parseInt(item,index)}) 也就是 结果是[...

    jindong 评论0 收藏0
  • parseInt 引发的问题---想到浮点运算精度丢失---看透js number 的 encod

    摘要:如题先陈述下问题背景偶尔测测自己写的计算器,随便输入玩嘛,然后发生下面诡异的事情当我从一个输入到十个的时候,过程显示都是正确的,像这样继续输入一个的时候,然后就这个样子了什么原因呢看了下自己的代码,代码重要部分长这样的这里用了一下强制转化为 如题 先陈述下问题背景 偶尔测测自己写的计算器,随便输入玩嘛,然后发生下面诡异的事情:当我从一个 1 输入到十个 1 的时候,过程显示都是正确的...

    hightopo 评论0 收藏0
  • 专题

    摘要:专题安全攻防专题跨站脚本攻击,原理利用系统漏洞,将具有恶意攻击行为的可执行脚本植入系统,且会自动执行。 专题 /* * web安全攻防专题 * ------------------------------------------------------------------------ * xss:跨站脚本攻击(XSS,Cross-site scripting) * * * 1、...

    Leck1e 评论0 收藏0
  • 一些冷门的js操作

    摘要:突然有一天,发现了一些基于很基础的东西的骚操作,就开始怀疑人生如果没有遇到被某些东西打击到或者见识到新的世界,可能永远的,就感叹真好用,我精通,精通。最后,就相当于对每一个元素进行,,,,位操作符基本用法和概念就不说了,自行看文档。 本文来源于我的github 0.前言 大家学习的时候,一开始小白,然后接触到进阶的东西的时候,发现一切得心应手,有的人可能开始说精通了。突然有一天,发现...

    ckllj 评论0 收藏0

发表评论

0条评论

NervosNetwork

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<