我无法理解JavaScript中second parameter
方法parseInt
的使用情况。以下是一些输出:
parseInt("9",10)
====> 输出 9
parseInt("9",100)
====> 输出:NaN
parseInt("90",10)
====> 输出 9
parseInt("90",100)
====> 输出:NaN
请解释第二个参数的用途。
答案 0 :(得分:3)
第二个参数称为Radix - 请参阅此处http://en.wikipedia.org/wiki/Radix,该参数用于指定编号系统。有关更详细的解释,请参见此处http://mir.aculo.us/2010/05/12/adventures-in-javascript-number-parsing/
答案 1 :(得分:2)
这是基础。因此,如果它是10,则它正常运行。
parseInt("9",8) ===> NaN
parseInt("7",8) ===> 7
文档在这里:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt
答案 2 :(得分:2)
基数用于指定允许数字的范围,也称为数字系统或基数;省略时,它会通过查看字符串的前缀来猜测值,例如: “0x”前缀表示16(十六进制)的基数。对于十进制系统,始终将其明确设置为10
是一种很好的做法。
当数字超出指定的基数时,parseInt()
将返回NaN
。
对于你所看到的基数为100的NaN
结果,虽然没有记录,但基数的允许范围是[1,36],即最大的基数包括数字和字母。
答案 3 :(得分:1)
引用MDN(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt):
基数
一个整数,表示上述字符串的基数。始终指定此参数以消除读者混淆并保证可预测的行为。当未指定基数时,不同的实现会产生不同的结果。
将其视为您尝试解析的数字的基数,它将返回基数10中的数字:
parseInt(11,10) // -> 11
parseInt(11,2) //-> 3 (binary)
parseInt(1,6) // 1
parseInt(2,6) // 2
parseInt(3,6) // 3
parseInt(4,6) // 4
parseInt(5,6) // 5
parseInt(6,6) // NaN
parseInt(7,6) // NaN
parseInt(8,6) // NaN
parseInt(9,6) // NaN
parseInt(10,6) // 6, since 5 is the highest digit in base 6 and because of this after 5 comes 10
答案 4 :(得分:1)
第二个参数是基数(或基数)。 defaut是基数10,所以如果你省略它,或者使用10,那么你将获得与你正在解析的相同的十进制数。如果指定base 16(十六进制),那么将解析解析后的数字:
示例:
parseInt("1",16) = 1
parseInt("2",16) = 2
parseInt("3",16) = 3
...
parseInt("9",16) = 9
parseInt("A",16) = 10
parseInt("B",16) = 11
...
parseInt("F",16) = 15
parseInt("10",16) = 16 (1x16 + 0)
parseInt("11",16) = 17 (1x16 + 1)
parseInt("12",16) = 18 (1x16 + 2)
这有帮助吗?
答案 5 :(得分:1)
首先,你的一些例子是不正确的。 parseInt(“90”,10)应输出90。
第二个参数是ary。 parseInt(“90”,10)表示将“90”解析为十进制。
但为什么parseInt(xxx,100)输出NaN?你应该尝试parseInt(“90”,36)和parseInt(“90”,37)。
明白了吗?只有36个字母,所以没有更多的字母显示37个十六进制中的数字。
最后,抱歉我的英语。