javascript 常忽略的基础知识

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:"加油!";}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容