JavaScript类型系统之Number(2)

console.log(Number('    123'));//123
console.log(Number('1.2.'));//NaN
console.log(Number('1.2.'));//报错
console.log(Number(''),Number(' '));//0 0
console.log(Number('11'),Number('011'),Number('0x11'));//11 11 17
console.log(Number('abc'));//NaN

  Number(对象):

    Number([]和[0]和[-0]):0

    Number([数字]):运算后的数字

    Number([1,2]和{}和其他对象):NaN

console.log(Number([]),Number([0]),Number([-0]),Number([0,0]));//0 0 0 NaN
console.log(Number([1]),Number([-1]));//1 -1
console.log(Number([1,2]),Number({}));//NaN NaN

  [注意]可以用一个值-0来将其转换成一个数字,有隐式类型转换Number()

console.log(typeof ('123'-0),'123'-0);//number 123
console.log(typeof ('123px'-0),'123px'-0);//number NaN
console.log(typeof (true-0),true-0);//number 1
console.log(typeof ([]-0),[]-0);//number 0

parseInt()

  parseInt()专门用于把字符串转换成数值。在转换字符串时,会忽略字符串前面的空格,直到找到第一个非空格字符。如果第一个字符不是数字字符或者负号,parseInt()就会返回NaN。如果是,则继续解析,直到解析完成或者遇到非数字字符

console.log(parseInt('    123px'));//123
console.log(parseInt('  123  '));//123
console.log(parseInt(' -123px'));//-123
console.log(parseInt('a123px'));//NaN
console.log(parseInt('0 123px'));//0

  parseInt()可以识别出各种进制的数字,输出的是运算后的十进制的数字,如1.0或1.或01会以1输出。在解析八进制字面量的字符串,ECMAScript3会解析八进制,但ECMAScript5没有解析八进制的能力

console.log(parseInt('11'));//11
console.log(parseInt(11));//11
console.log(parseInt('11.1'));//11
console.log(parseInt(11.1));//11
console.log(parseInt('011'));//11
console.log(parseInt(011));//9
console.log(parseInt('011.1'));//11
console.log(parseInt(011.1));//报错
console.log(parseInt('0x11'));//17
console.log(parseInt(0x11));//17
console.log(parseInt('0x11.1'));//17
console.log(parseInt(0x11.1));//报错

  parseInt()函数提供第二个参数,表示多少进制

console.log(parseInt('11',2));//3
console.log(parseInt('11',8));//9
console.log(parseInt('11',10));//11
console.log(parseInt('11',16));//17

  因为parseInt()是专门用来处理字符串转换数字的,所以parseInt处理非字符串和数字类型时输出NaN

  [注意]]parseInt([数字或字符串])输出对应的数字

console.log(parseInt(null),parseInt(undefined));//NaN NaN
console.log(parseInt(true),parseInt(false));//NaN NaN
console.log(parseInt([]),parseInt(['2.5px']),parseInt([2.5]));//NaN 2 2
console.log(parseInt(''),parseInt(' '),parseInt({}));//NaN NaN NaN

parseFloat()

  类似于parseInt(),专门用于字符串转换数字。解析时会忽略字符串前面的空格,直到找到第一个非空格字符,然后一直解析到字符串末尾或一个无效的浮点数字字符为止

console.log(parseFloat('    0123.px'));//123
console.log(parseFloat('    123.px'));//123
console.log(parseFloat('    123.1px'));//123.1
console.log(parseFloat('  123.1.2px  '));//123.1
console.log(parseFloat(' -123.0px'));//-123
console.log(parseFloat('.123.1px'));//0.123
console.log(parseFloat('0 123px'));//0

  parseFloat()可以识别不同进制的数字,但只能解析十进制字符串

console.log(parseFloat('11'));//11
console.log(parseFloat(11));//11
console.log(parseFloat('11.1'));//11.1
console.log(parseFloat(11.1));//11.1
console.log(parseFloat('011'));//11
console.log(parseFloat(011));//9
console.log(parseFloat('011.1'));//11.1
console.log(parseFloat(011.1));//报错
console.log(parseFloat('0x11'));//0
console.log(parseFloat(0x11));//17
console.log(parseFloat('0x11.1'));//0
console.log(parseFloat(0x11.1));//报错

  因为parseFloat()是专门用来处理字符串转换数字的,所以parseFloat处理非字符串和数字类型时输出NaN

  [注意]parseFloat([数字或字符串])输出对应的数字

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/24971e9814124ae25cd58258e6108aef.html