# parseInt和Number区别
# parseInt
parseInt()函数将给定的字符串以指定的基数解析为整数。parseInt(string,radix)
第二个参数表示使用的进制,我们一般使用10进制,也可能会有到8或者16进制。为了避免对“0”和“0x”开头的字符串解析错误,各种javascript编程规范都规定必须要明确给出第二个参数的值,如parseInt(“123”,10).
parseInt('16', 8) = 14
parseInt('10', 8) = 8
parseInt('16', 10) = 16
parseInt('10', 10) = 10
parseInt('16', 16) = 22
parseInt('10', 16) = 16
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
parseInt从头解析string为整数,在遇到不能解析的字符时就返回已经解析的整数部分,如果第一个字符就不能解析,就直接返回NaN。
# Number
Number()在不用new操作符时,可以用来执行类型转换。如果无法转换为数字,就返回NaN。 像“123a”,parseInt()返回是123,Number()返回是NaN。
# 区别
不同类型的字符串使用这两个函数的转换区别:
// 当字符串是由数字组成的时候 他们转换的数字是一样的没有差别
let numStr = '123'
console.log(parseInt(numStr)) //123
console.log(Number(numStr)) //123
// 当字符串是由字母组成的时候
let numStr = 'abc'
console.log(parseInt(numStr)) //NaN
console.log(Number(numStr)) //NaN
// 当字符串是由数字和字母组成的时候
let numStr = '123a'
console.log(parseInt(numStr)) //123
console.log(Number(numStr)) //NaN
// 当字符串是由0和数字组成的时候
let numStr = '0123'
console.log(parseInt(numStr)) //123
console.log(Number(numStr)) //123
// 当字符串包含小数点
let numStr = '123.456'
console.log(parseInt(numStr)) //123
console.log(Number(numStr)) //123.456
// 当字符串为null时
let numStr = null
console.log(parseInt(numStr)) //NaN
console.log(Number(numStr)) //0
// 当字符串为''时
let numStr = ''
console.log(parseInt(numStr)) //NaN
console.log(Number(numStr)) //0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
← 判断数组的方法 事件机制、事件模型、事件流 →