​ 前面在看题目的时候 偶然看到 使用parseInt 来进行整数判断 但是这里的parseInt是错误示范

之后了解了一下 发现这和函数 很有研究

先看看 w3c怎么说这个的

parseInt() 函数可解析一个字符串,并返回一个整数。
string 必需。要被解析的字符串。
radix
可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。 如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。 如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。

说实话 虽然我没有比较好的描述,但是觉的他的解释并不好 看不懂

我们来看看当没有 radix这个参数的时候 parseInt()是如何解析的

如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数

如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。

如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。

以及注意事项

注释:只有字符串中的第一个数字会被返回。

注释:开头和结尾的空格是允许的。

提示:如果字符串的第一个字符不能被转换为数字,那么 parseFloat() 会返回 NaN。

实例

parseInt('12',10)    //10
parseInt(11,2,10) //3 只解析前两位 这里将 11 转化为2禁止 也就是 0011 也就是 3
parseInt( 11 ,2) //3 空格不影响结果
parseInt("dasas",2) // NaN 运算发生错误

接下来让我们看看 为什么 parseInt不适合判断是否整数

parseInt(0.000001, 10)    // 0
parseInt(0.0000001, 10) //1 为什么会是1 !
parseInt(10000000000000,10) //10000000000000
parseInt(10000000000000000000000000000,10) // 1

因为 0.0000001 会被科学计算转化为1e-7 于是parseInt就进行识别 1 认识 e不认识 返回 10进制的1 结果为 1

10000000000000000000000000000 => 1e+28 所以为1

所有 这里数字过小 过大就不再适合 使用parseInt来进行判断

拓展

console.log(parseInt(1/0,19))      //18
console.log(parseInt(false,16)) //250
console.log(parseInt(parseInt,16)) //15
console.log(parseInt('0x10')) //16
console.log(parseInt('10',2)) //2

这是我在别人博客看到的 这些都会了 parseInt就没问题了

解释

console.log(parseInt(1/0,19))

首先计算 1/0 多少 控制台输出 Infinity 代码就变成了

parseInt("Infinity",19)

19进制 ( 0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f,g,h,i )

进行解析 I 存在 19进制 解析为18 n不存在 直接返回 所以 = 18

console.log(parseInt(false,16))

18进制 (0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f)

false parseInt不认识 于是 逐个解析

f 存在 a 存在 l不认识返回 16进制的fa = > 10进制的 250

console.log(parseInt(parseInt,16))

和上面同理 parseInt被解析成为字符串

console.log(parseInt('0x10'))

没有第二参数 默认 10进制 0x 表示 16进制 0x10为 10 10进制为 => 16

console.log(parseInt('10',2))

10 二进制 解析 => 2

关于parseInt的看法的更多相关文章

  1. Integer.parseInt 引发的血案

    Integer.parseInt 处理一个空字符串, 结果出错了, 程序没有注意到,搞了很久, 引发了血案啊!! 最后,终于 观察到了, 最后的部分: Caused by: java.lang.NoC ...

  2. parseInt实例详解

    parseInt() 函数可解析一个字符串,并返回一个整数. parseInt(string, radix) 参数 描述 string 必需.要被解析的字符串. radix 可选.表示要解析的数字的基 ...

  3. JavaScript 中 Number()、parseInt()、parseFloat()的区别

    Number(): 概述:Number 对象由 Number() 构造器创建,是经过封装的能让你处理数字值的对象.在非构造器上下文中 (如:没有 new 操作符),Number 能被用来执行类型转换. ...

  4. 从业十余年谈谈对dotnet看法与坚持

    前言 园子经常在讨论关于.Net发展的问题,我也这些年在工作乃至创业过程中使用.Net碰到的一些问题和看法.个人擅长的技术面,C/C++/MFC/STL.ASM.JAVA.VB.Javascript/ ...

  5. 第一章-第十五题(谈谈你对压力的看法,以及怎么和别人合作, 帮助别人,把压力转化为动力,在互相帮助的环境中成长。)--By林培文

    压力是一把双刃剑,有害也有利,重点是如何看待压力,从而做到趋利避害,化压力为动力.对于当前的我来说,压力利大于弊.形成这一想法,我经历了好几个阶段.第一个阶段是小学时代,那会整天就知道玩,也没什么压力 ...

  6. Integer.valueof(String s)和Integer.parseInt(String s)的具体区别是什么?

    Integer.valueof(String s)和Integer.parseInt(String s)的具体区别是什么? Integer.valueof(String s)是将一个包装类是将一个实际 ...

  7. ["1", "2", "3"].map(parseInt)?

    ["1", "2", "3"].map(parseInt)得到什么? 答案是:[1, NaN, NaN]. 原因:parseInt接收的是两 ...

  8. js parseInt和map函数

    今天看了一个js的题目["1","2","3"].map(parseInt),看到后脑海中浮现的答案是[1,2,3],但是看到正确答案后蒙了 ...

  9. IE8的parseInt

    踩到一个IE8的parseInt的坑: Chrome:

随机推荐

  1. 基本类型int强转short时发生了什么?

    我们知道java中一个int类型占32bits(4字节),一个short占16bits(2字节)强制转换时只取低16位(short类型占的那16位),高16位(去掉低位多出来的那部分)属于溢出不计算, ...

  2. Selenium 2.0 以后不在必须Selenium server了

    does not require the Selenium Server to automate the browser.这个句话,解决了我很的疑惑,新版Selenium 可以直接操作浏览器了,还可以 ...

  3. ORACLE查询删除重复记录三种方法

    本文列举了3种删除重复记录的方法,分别是rowid.group by和distinct,小伙伴们可以参考一下.   比如现在有一人员表 (表名:peosons) 若想将姓名.身份证号.住址这三个字段完 ...

  4. SSM整合的简单实现

    整合需要的jar包和源码将在文末给出 本文参考黑马程序员视频,由于视频用的环境和我使用的环境不同,建议使用我的环境及jar包(比较新) 一 整合思路 第一步 整合dao层 mybatis和spring ...

  5. xshell里的一些配色方案

    只需要把下面的代码复制到记事本中,保存为xcs文件格式,然后在xshell中导入选中就可以换配色方案了,可以自己修改下面的代码 [ubuntu]text(bold)=ffffffmagenta(bol ...

  6. Flask博客类登录注册验证模块代码(十四)

    1 文件系统 blog #博客类 App forms #表单 __init__.py user.py models #模型 __init__.py user.py static #静态文件 templ ...

  7. May 26th 2017 Week 21st Friday

    One thorn of experience is worth a whole wilderness of warning. 一次痛彻心扉的经历,抵得上千百次的告诫. Several days ag ...

  8. Jmeter入门13 jmeter发送application/octet-stream二进制流数据

    http接口请求header里面 content-type: application/octet-stream  (二进制流数据),如何用jmeter发送请求? 1 添加http请求头 2 http请 ...

  9. 用批处理在windows中导出/导入无线网络信息,复制保存为bat即可

    @echo offtitle 在windows中导出/导入无线网络信息 :Beginecho ========================echo 请选择操作:echo 1 查看可用的无线网络ec ...

  10. mobile easyui兼容实体数据(tree插件为例)

    ORM的实体类和数据库的类是一一对应的,如果有多级的嵌套循环json返回到前台为了方便展示可以使用mobile easyui,但是mobile easyui又需要特定的属性才可以,比如id,text, ...