目的:将一个字符串变成数字
//常规操作
let str = '2'
console.log(Number(str)) //2
//操作一
let str = '2'
console.log(~~str) //2
解析:
js中有是按位取反运算,~ 用来作双非按位取反运算
~~ 的作用是去掉小数部分,对于正数,向下取整;对于负数,
向上取整;与Math.floor()不同的是,它只是单纯的去掉小数部分,不论正负都不会改变整数部分;
非数字取值为0,它具体为;
~~null; // => 0
~~undefined; // => 0
--NaN; // => 0
~~0; // => 0
~~{}; // => 0
~~[]; // => 0
~~(1/0); // => 0
~~false; // => 0
~~true; // => 1
~~1.9; // => 1
~~-1.9; // => -1
操作二
let str = '2'
console.log(+str) //2
解析:
JS中的 '+' 号
当用作单目操作符的时候,+操作符不会对Number类型产生影响。但如果应用在字符串类型上,会将其转换为数字:
let a = 25;
a =+ a;
console.log(a); //25
let b = '50';
console.log(typeof b); //String
b=+b;
console.log(typeof b); //Number
通常使用+操作符可以快速地将字符串转换为数字。但是如果字符串字面量无法转化为数字的话,结果会出人意料:
let a = 'kangkang';
a =+ a;
console.log(a) //NaN
console.log(typeof a); //Number
let b = '';
b=+b;
console.log(b); //0
console.log(typeof b); //Number
网友评论