Js将字符串转数字的⽅式
js字符串转换数字⽅⽅式主要有三类:转换函数、强制类型转换、弱类型隐式类型转换,利⽤这三类转换的⽅式可以有5种转换的⽅法。
parseInt()
parseInt()和Number.parseInt()是最常⽤的转换字符串为整数数值的⽅法,其中Number.parseInt()是ES6之后为了减少全局⽅法的定义才增加的静态⽅法,实质与全局⽅法parseInt()相同,他们的规则如下:
忽略字符串前⾯的空格,直⾄到第⼀个⾮空字符。
如果第⼀个⾮空字符不是数字或者是正负号则返回NaN。
如果第⼀个是数字字符⼀直解析到⼀个⾮数字字符。
如果第⼀个是数字字符,能识别出各种整数格式。
接受第⼆个参数,即转换时使⽤的基数。
⼩数向下取整。
console.log(Number.parseInt(true));        // NaN
console.log(Number.parseInt(false));      // NaN
console.log(Number.parseInt(null));        // NaN
console.log(Number.parseInt(undefined));  // NaN
console.log(Number.parseInt(NaN));        // NaN
console.log(Number.parseInt("  123"));    // 123
console.log(Number.parseInt(" ab123"));    // NaN
console.log(Number.parseInt(""));          // NaN
console.log(Number.parseInt(" 31avs"));    // 31
console.log(Number.parseInt("0xF"));      // 15
console.log(Number.parseInt("070"));      // es3->56 es5->70
console.log(Number.parseInt("A", 16));    // 10
console.log(Number.parseInt("A"));        // NaN
console.log(Number.parseInt("51.2"));      // 51
console.log(Number.parseInt("-51.2"));    // -51
parseFloat()
parseFloat()和Number.parseFloat()是最常⽤的转换字符串为浮点数数值的⽅法,其中Number.parseFloat()是ES6之后为了减少全局⽅法的定义才增加的静态⽅法,实质与全局⽅法parseFloat()相同,他们的转换规则如下:
忽略字符串前⾯的空格,直⾄到第⼀个⾮空字符。
如果第⼀个⾮空字符不是数字或者是正负号则返回NaN。
如果第⼀个是数字字符⼀直解析到⼀个⾮数字字符。
字符串中第⼀个⼩数点是有效的第⼆个⼩数点是⽆效的。
只解析10进制,不接受第⼆个参数。
console.log(Number.parseFloat(true));            // NaN
console.log(Number.parseFloat(false));          // NaN
console.log(Number.parseFloat(null));            // NaN
console.log(Number.parseFloat(undefined));      // NaN
console.log(Number.parseFloat(NaN));            // NaN
console.log(Number.parseFloat("123"));          // 123
字符串函数注册登录console.log(Number.parseFloat("  123.1"));      // 123.1
console.log(Number.parseFloat("  ab123.1"));    // NaN
console.log(Number.parseFloat(""));              // NaN
console.log(Number.parseFloat("  123.3.4eqw"));  // 123.3
console.log(Number.parseFloat("0xF"));          // 0
Number()
Number()构造函数会返回⼀个字⾯量值,⽽使⽤new Number()则会返回⼀个数字对象,他们的转换规则如下:
如果是Boolean值,true和false分别返回1或0。
如果是数字,只是单纯的传⼊和返回。
如果是null,则返回0。
如果是undefined返回NaN。
如果是字符串且字符串为空则返回零,忽略前导零。
如果是字符串且字符串为整数则返回整数,忽略前导零。
如果是字符串且字符串为浮点数则返回浮点数。
如果是字符串且字符串为16进制,转为10进制返回。
除以上格式返回NaN。
如果是对象,则调⽤对象的valueOf,按照前⾯的规则返回值,如果返回NaN,再调⽤toString(),按照前⾯的规则返回值。
console.log(Number(true));        // 1
console.log(Number(false));      // 0
console.log(Number(null));        // 0
console.log(Number(undefined));  // NaN
console.log(Number(NaN));        // NaN
console.log(Number(""));          // 0
console.log(Number("123"));      // 123
console.log(Number("  123"));    // 123
console.log(Number("123.12"));    // 123.12
console.log(Number("0xF"));      // 15
位运算
位运算是直接对⼆进制位进⾏计算,它直接处理每⼀个⽐特位,是⾮常底层的运算,好处是速度极快,缺点是很不直观。位运算只对整数起作⽤,如果⼀个运算数不是整数,会⾃动转为整数后再运⾏。在JavaScript内部,很多时候数值都是以64位浮点数的形式储存,但是做位运算的时候,是以32位带符号的整数进⾏运算的,并且返回值也是⼀个32位带符号的整数。
console.log(~~(true));        // 1
console.log(~~(false));      // 0
console.log(~~(null));        // 0
console.log(~~(undefined));  // 0
console.log(~~(NaN));        // 0
console.log(~~(""));          // 0
console.log(~~("123"));      // 123
console.log(~~("  123"));    // 123
console.log(~~("123.12"));    // 123
console.log(~~("0xF"));      // 15
⼀元运算符
⼀元运算符可以将字符串进⾏隐式的类型转换,与其它的解析⽅式不同,如果是⼀个NaN值,那么返回的也是NaN,通常使⽤+操作符,因为这个⽅式不容易混淆。
console.log(+(true));        // 1
console.log(+(false));      // 0
console.log(+(null));        // 0
console.log(+(undefined));  // NaN
console.log(+(NaN));        // NaN
console.log(+(""));          // 0
console.log(+("123"));      // 123
console.log(+("  123"));    // 123
console.log(+("123.12"));    // 123
console.log(+("0xF"));      // 15

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。