Skip to content
  • 常规操作
js
let str = '2'
console.log(Number(str))   //2
let str = '2'
console.log(Number(str))   //2
  • 优化一
js
let str = '2'
console.log(~~str)    //2
let str = '2'
console.log(~~str)    //2

TIP

js中有~是按位取反运算,~~ 用来作双非按位取反运算。

~~ 的作用是去掉小数部分,对于正数,向下取整;对于负数,向上取整;与Math.floor()不同的是,它只是单纯的去掉小数部分,不论正负都不会改变整数部分。

js
~~null;      // => 0
~~undefined; // => 0
--NaN;       // => 0
~~0;         // => 0
~~{};        // => 0
~~[];        // => 0
~~(1/0);     // => 0
~~false;     // => 0
~~true;      // => 1
~~1.9;       // => 1
~~-1.9;      // => -1
~~null;      // => 0
~~undefined; // => 0
--NaN;       // => 0
~~0;         // => 0
~~{};        // => 0
~~[];        // => 0
~~(1/0);     // => 0
~~false;     // => 0
~~true;      // => 1
~~1.9;       // => 1
~~-1.9;      // => -1
  • 优化二
js
let str = '2'
console.log(+str)    //2
let str = '2'
console.log(+str)    //2

TIP

JS中的 '+' 号

当用作单目操作符的时候,+操作符不会对Number类型产生影响。但如果应用在字符串类型上,会将其转换为数字:

js
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 = 25;
a =+ a;
console.log(a); //25
let b = '50';
console.log(typeof b);    //String
b=+b;
console.log(typeof b);    //Number

通常使用+操作符可以快速地将字符串转换为数字。但是如果字符串字面量无法转化为数字的话,结果会出人意料:

js
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
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