2进制,基数只能为 0,1
3进制,基数为0,1,2
4进制,基数为0,1,2,3
5进制,基数为0,1,2,3,4
...
8进制,基数为0,1,2,3,4,5,6,7
10进制,基数为0,1,2,3,4,5,6,7,8,9
16进制,基数为0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f
发现一个规律,基数们都小于 < 进制数
如 2进制数 的基数 0 和1 都小于2对吧!
继续往下看:
parseInt(str, radix)
str:字符串
radix: 几进制呀
当 radix >0 && (radix>36 || radix < 2) 返回NAN
当 radix = 0 或没传即(radix=undefined)返回十进制
当正常情况下,
str左起第一个数一旦大于进制数radix,立马返回 NaN
str左起第一个数一旦小于进制数radix,就去做运算,直到遇到一个大于等于radix,就不加了哈!
parseInt('425213', 5) //22
['1', '2', '3'].map(parseInt)
让其变形为
parseInt('1', 0); // 1
parseInt('2', 1); // NaN
parseInt('3', 2); // 由于 2的二进制数是 0 和 1 组成的,所以要返回 NaN
parseInt('1222', 2) //首位 1<2哎, 则 1
parseInt('213', 3); // 2* 3 + 1 = 7; 简单的我会算
['10', '10', '10', '10', '10'].map(parseInt)
parseInt('10', 0); // 10 无意义吧
parseInt('10', 1); // NaN ’10‘ 的首位 1>=1啦!直接NaN
parseInt('10', 2); // 1*2 + 0 = 2
parseInt('10', 3) // 1*3 + 0 = 3
parseInt('10', 4); // 1*4 + 0 = 4