1. !!'a'//true这是什么意思?
答:转Boolean类型,通过两个取反,强制转化成Boolean类型
2. ~~3.14159//3
~~'5.678'//5
-2.33 | 0 //-2
2.33 >> 0 //2 这是什么意思?
答: 将字符串转换成数字类型。向下取整。原理是~是一个叫做按位非的操作,会返回数值的反码,两次取反就是原数。|为位运算符,两个位只要有一个为1,那么结果都为1,否则就为0。>>运算符执行有符号右移位运算。都是二进制操作。 原因在于JavaScript中的number都是double类型的,在位操作的时候要转化成int。
3.用 || 和 &&来简化if-else
答: let a = b || 1;//b为真,a=b;b为假,a=1;
let c = b && 1;//b为真,c=1;b为假,c=b;
// 使用!!符号
let isValid = !!(value && value !== 'error');
“!”是取反操作,就是负..负负得正..比较常用的是||。
4.在IE5.5~8中怎么给underfined赋值???
答:在IE5.5-8中underfined不是保留字但是IE9+之后无效用void获取更精准
let data = void 0; // undefined
5.标准JSON的深拷贝.
let a = {
a1: 1,
b1: { c: 1, d: 2 }
};
let b=JSON.parse(JSON.stringify(a));
b;//{a1: 1, b1: {…}}
不考虑IE的情况下,标准JSON格式的对象很实用,不过对于undefined和function的会忽略掉。