Javascript 为什么parseInt(x,0)与parseInt(x,10)相同?
为什么Javascript 为什么parseInt(x,0)与parseInt(x,10)相同?,javascript,Javascript,为什么parseInt('60',10)与parseInt('60',0)相同 JavaScript如何将0基数从MDN()转换为? 如果基数未定义、0或未指定,JavaScript将假定以下情况: 如果输入字符串以“0x”或“0x”(零后跟小写或大写X)开头,则假定基数为16,字符串的其余部分将解析为十六进制数 如果输入字符串以“0”(零)开头,则假定基数为8(八进制)或10(十进制)。具体选择哪个基数取决于实现。ECMAScript 5澄清了应该使用10(十进制),但并非所有浏览器都支持这一
parseInt('60',10)
与parseInt('60',0)
相同
JavaScript如何将0基数从MDN()转换为?
如果基数未定义、0或未指定,JavaScript将假定以下情况:
如果输入字符串以“0x”或“0x”(零后跟小写或大写X)开头,则假定基数为16,字符串的其余部分将解析为十六进制数
如果输入字符串以“0”(零)开头,则假定基数为8(八进制)或10(十进制)。具体选择哪个基数取决于实现。ECMAScript 5澄清了应该使用10(十进制),但并非所有浏览器都支持这一点。因此,在使用parseInt时,请始终指定基数
如果输入字符串以任何其他值开头,则基数为10(十进制)
因此,如果解析的输入从“0”开始,则结果取决于浏览器。来自:
如果基数
为未定义
或0
,则假定为10
,除非数字以代码单元对0x
或0x
开头,在此情况下,假定基数
为16
。如果基数
为16
,则该数字也可以选择以代码单元对0x
或0x
开头
具体而言,步骤6、8和9说明:
6-让R
ToInt32(基数)
8-如果R≠ <代码>0
9-否则R
=0
,让R
成为10
因此,当radix==0
时,它将始终替换为10
,假设浏览器是兼容的
如果基数是未定义的
,0
,或未指定的
,则JavaScript假设如下:
- 如果输入字符串以“0x”或“0x”(零后跟小写或大写X)开头,则假定基数为16,字符串的其余部分将解析为十六进制数
- 如果输入字符串以“0”(零)开头,则假定基数为8(八进制)或10(十进制)。选择哪个基数取决于具体实现。ECMAScript 5澄清了应该使用10(十进制),但并非所有浏览器都支持这一点。因此,在使用
时,请始终指定基数parseInt
- 如果输入字符串以任何其他值开头,则基数为10(十进制)
parseInt(字符串,基数)代码>
字符串
:
- 要分析的值。如果此参数不是字符串,则使用ToString抽象操作将其转换为字符串。忽略此参数中的前导空格
基数
- 介于2和36之间的整数,表示字符串的基数(数学数字系统中的基数)。小心-这不是默认值10
根据文档,如果基数未定义或为0,则假定为10。
所以
1.因为与未定义的默认值一样,0
,也是false-y。2. ...10
?您希望base-0中的任何数字是什么?如果输入以“0”
开头,则结果将取决于浏览器。在OP的情况下(输入是“60”
),所有浏览器都应该将基数设置为10
。
parseInt('60', 10) = (0 * 10 ^ 0) + (6 * 10 ^ 1) = 60
and
parseInt('60', 0) = (0 * 10 ^ 0) + (6 * 10 ^ 1) = 60