关于parseInt你不知道的事

先来看一个浏览器

parseInt(false,16)

若是你知道上面这行代码输出了250 那么恭喜你...函数

我成功骗到了你的时间..你能够出去了..spa

——————————————————————————————————code

先来看下parseInt的定义用法:blog

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

可是为何会出现第一行返回250的状况呢字符串

继续string

parseInt(string, radix)

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

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

  • 若是 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

很容易吧 

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

相关文章
相关标签/搜索