这是她的两个关键点
parseInt首先会将非字符串转为字符串,所以parseInt(1),
她首先会去把1隐式转换为'1',再显示转为1,对有点智障
parseInt会贪婪的解析,直到自己不能转化
先来看定义:
parseInt(string, radix);
string 要被解析的值。如果参数不是一个字符串,则将其转换为字符串(使用 ToString 抽象操作)。字符串开头的空白符将会被忽略。 radix 可选 从 2 到 36,表示字符串的基数。例如指定 16 表示被解析值是十六进制数。请注意,10不是默认值!
关于参数radix的值:
如果
radix
是undefined
、0
或未指定的,JavaScript会假定以下情况:
如果输入的
string
以 "0x
"或 "0x
"(一个0,后面是小写或大写的X)开头,那么radix被假定为16,字符串的其余部分被当做十六进制数去解析。如果输入的
string
以 "0
"(0)开头,radix
被假定为8
(八进制)或10
(十进制)。具体选择哪一个radix取决于实现。ECMAScript 5 澄清了应该使用 10 (十进制),但不是所有的浏览器都支持。因此,在使用parseInt
时,一定要指定一个 radix。如果输入的
string
以任何其他值开头,radix
是10
(十进制)。如果第一个字符不能转换为数字,
parseInt
会返回NaN
。
关于解析规则:
如果
parseInt
遇到的字符不是指定radix
参数中的数字,它将忽略该字符以及所有后续字符,并返回到该点为止已解析的整数值。parseInt
将数字截断为整数值。 允许前导和尾随空格。
返回值:
从给定的字符串中解析出的一个整数。
或者
radix
小于2
或大于36
,或第一个非空格字符不能转换为数字。
实例:
parseInt('123a')
//=>123 只解析到3,a不符合10进制解析规则
注意:
-
请不要将parseInt()和比较混淆
('a' < 'b')
//=>true 在比较的时候,会转化为ASCII
parseInt('a')
//=>NaN
// 在解析的时候就不一样了,这里相当于parseInt('a', 10)
// 即通过10进制的方式去解析'a',那么会得到NaN(无法解析)的结果关于比较的问题,请看
参考:
[r1]