Javascript碎片化记忆

145 阅读1分钟

Javascript碎片化记忆

字符串转化数字

利用内置方法parseIntparseFloat可以将字符串转换为数字。

我们也可以利用+来实现此目的

//Longhand 
let total = parseInt('453'); 
let average = parseFloat('42.6'); 
//Shorthand 
let total = +'453'; 
let average = +'42.6';

变量交换

交换x、y值

let x = 1,y = 2;
[x,y] = [y,x]; //x=2,y=1

取整与四舍五入

//保留整数部分
parseInt(7/2)
//向上取整
Math.ceil(7/2)
//四舍五入
Math.round(7/2)
//向下取整
Math.floor(7/2)
//保留小数位数
10.989.toFixed(2) // 10.99
10.984.toFixed(2) // 10.98

toLocaleString() 方法

将数字变成千分位格式

let num = 1234.56789
console.log(num.toLocaleString())
//1,234.568

num.toLocaleString('zh', { maximumFractionDigits: 6 });   
//1,234.56789

详细见MDN文档

developer.mozilla.org/en-US/docs/…

typeof && instanceof

原始值不能利用instanceof运算符

JavaScript的内置对象(例如Boolean,String和Number)只能与instanceof一起使用,以检查使用相应构造函数创建的实例。

此外,typeof具有一些使问题变得更加复杂的怪癖,例如typeof null返回“ object”。

class PrimitiveNumber {
  static [Symbol.hasInstance] = x  => typeof x === 'number';//静态方法
}
123 instanceof PrimitiveNumber; // true

class PrimitiveString {
  static [Symbol.hasInstance] = x => typeof x === 'string';
}
'abc' instanceof PrimitiveString; // true

class PrimitiveBoolean {
  static [Symbol.hasInstance] = x => typeof x === 'boolean';
}
false instanceof PrimitiveBoolean; // true

class PrimitiveSymbol {
  static [Symbol.hasInstance] = x => typeof x === 'symbol';
}
Symbol.iterator instanceof PrimitiveSymbol; // true

class PrimitiveNull {
  static [Symbol.hasInstance] = x => x === null;
}
null instanceof PrimitiveNull; // true

class PrimitiveUndefined {
  static [Symbol.hasInstance] = x => x === undefined;
}
undefined instanceof PrimitiveUndefined; // true

详见文章