先来看一个浏览器
parseInt(false,16)
若是你知道上面这行代码输出了250 那么恭喜你...函数
我成功骗到了你的时间..你能够出去了..spa
——————————————————————————————————code
先来看下parseInt的定义用法:blog
parseInt() 函数可解析一个字符串,并返回一个整数。ip
可是为何会出现第一行返回250的状况呢字符串
继续string
parseInt(string, radix)
当参数 radix 的值为 0,或没有设置该参数时,parseInt() 会根据 string 来判断数字的基数。it
当忽略参数 radix , JavaScript 默认数字的基数以下:io
上面大概的意思就是:当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
很容易吧
总结的方法就是 若是你不肯定第一个参数是什么东西 用浏览器解析一下 再进行进制换算