Javascript碎片化记忆
字符串转化数字
利用内置方法parseInt,parseFloat可以将字符串转换为数字。
我们也可以利用+来实现此目的
//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
详见文章