1、undefined 和 void 0
undefined是js中的种基本数据类型,未定义的变量的类型和值都是undefined;但undefined不是js的保留字,可以更改,
例:undefined = 'bala',(在IE8以下打印undefined是‘bala’)。
所以建议在代码中如果想获取undefined的值用void 0, void 0就是用来获取undefined值的。
例:if(tag === void 0) return fun;
2、非整数的Number类型不能用 ===来比较
例:0.2+0.7 ===0.9 // false
实际运算结果是:0.8999999999999999,为什么呢?JavaScript 里的数字是采用 IEEE 754 标准的 64 位双精度浮点数,在运算的时候0.2和0.7首先转成二进制,浮点数用二进制表示是无穷的,但由于IEEE 754 标准的 64 位双精度浮点数的小数部分最多支持53位,所以小数部分截取后计算再转成十进制就有了精度误差。
浮点数比较应采用js提供的最小精度值,如:
Math.abs(0.2+0.7-0.9) <= Number.EPSILON
在实际项目中如果遇到浮点数计算的情况多数用toFixed方法保留小数位来解决计算结果一堆小数的问题。例:
parseFloat((0.2+0.7).toFixed(2)) //注:toFixed方法返回的是字符串。
3、css伪元素: ::first-line :: first-letter ::before ::after
3.1、::first-line 表示元素的第一行,只能出现在块级元素内
3.2、::first-letter 表示元素的第一个字母,可以出现在所有元素内,常用来实现首字母大写,例:
<p>welcome to BeiJing</p>
p::{text-transform: uppercase;}
3.3、::bdefore 和 ::after表示在内容之前和之后插入一个虚拟元素,必须指定content属性才会生效,例:
<p>中国</p>
p::after{content:"加油!";}