关于parseInt你不知道的事

本文详细解释了如何使用parseInt函数解析不同进制的字符串,并通过具体示例展示了如何根据不同的基数(radix)得到预期的整数值。

先来看一个

parseInt(false,16)

如果你知道上面这行代码输出了250 那么恭喜你...

我成功骗到了你的时间..你可以出去了..

——————————————————————————————————

先来看下parseInt的定义用法:

parseInt() 函数可解析一个字符串,并返回一个整数。

但是为什么会出现第一行返回250的情况呢

继续

parseInt(string, radix)

当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。

当忽略参数 radix , JavaScript 默认数字的基数如下:

  • 如果 string 以 "0x" 开头,parseInt() 会把 string 的其余部分解析为十六进制的整数。
  • 如果 string 以 0 开头,那么 ECMAScript v3 允许 parseInt() 的一个实现把其后的字符解析为八进制或十六进制的数字。
  • 如果 string 以 1 ~ 9 的数字开头,parseInt() 将把它解析为十进制的整数。

 

上面大概的意思就是:当radix有参数时,会以radix为进制解析string

回头看第一行代码 

parseInt(false,16) //250

意思就是 以16进制的方式 将false当做字符串解析 

f代表16 a代表11 l解析不出 

将fa转为十进制就是250啦 

再来几个

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

第一个 1/0 以19进制解析 1/0计算浏览器报Infinity 19进制是 0-9 a-i 只能解析出i 结果为18

第二个 parseInt并不是函数 console.log(parseInt)浏览器解析出 :function parseInt() 好办了 f为15 

第三个 0x为默认十六进制的开头 解析10 16没毛病

第四个 2进制解析10 结果是2

很容易吧 

总结的方法就是 如果你不确定第一个参数是什么东西 用浏览器解析一下 再进行进制换算

 

转载于:https://www.cnblogs.com/locim/p/9154124.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值