前端知识积累之——JS篇

1 原生js的dom操作

创建节点  createElement

移除节点  removeChild

替换节点 replaceChild(oldNode,newNode)

插入节点 insertBefore(newNode, refNode)在refNode节点前添加newNode

添加节点 appendChild(childNode)

高级选择器 querySelector(css选择器)

2、 == 的隐式转换

①、双等号两边有一个 NaN  一律返回false

②、双等号两边有布尔值,将布尔值转换成数字 false => 0 , true => 1

③、 如果等号一边有字符串,另一边有三种情况

(1) 如果是字符串,则直接比较

(2) 如果是对象,则先调用valueOf()方法,如果没有则调用toString()方法

(3) 如果是数字,则将字符串转换成数字,然后进行比较

(4) 如果是其他,则直接返回false

④ 如果是数字和对象比较,则调用对象的valueOf() 或者 toString()方法 进行比较

⑤ null == undefined

转换对象是先调用valueOf()方法,如果返回对象是对象本身或者一个对象则再调用toString()方法

但date对象是个例外,date对象默认先调用toString()方法、

eg :  new Date() + 1  => "Mon Aug 14 2017 15:40:31 GMT+0800 (中国标准时间)1"  返回字符串

3、 对于运算,先用Number()将对象转换成数字,然后进行计算

5 * null = 0      因为 Number(null)  = 0 

5 * "A"  = NaN  因为 Number("A") = NaN

如果Infinity与0相乘,结果是NaN

5 / 0   5/null  ==> 结果是 Infinity

0 / infinity ==> 0

但是 0/0  ==> 结果是 NaN

取余的隐式转换规则

Infinity%Infinity结果是NaN

a % b  中 b 是除数, a 是被除数

被除数无穷大, 除数有限大, 则 NaN

被除数有限大, 除数为0, 则NaN

被除数有限大, 除数无限大, 则结果是被除数

被除数是0 , 结果是0

0 % NaN ==> NaN 

5 - Infinity  ==> -Infinity

console.log(Infinity-Infinity);//NaN

console.log("两个数的差是"+5-5);//NaN

console.log("两个数的差是"+(5-5));//两个数的差是0

4、DOM事件流

DOM事件流分为冒泡型事件流和捕获型事件流

点击事件的发生过程是 事件捕获 事件处理  事件冒泡

事件捕获是从windows ——> document  ——> html ——> body ——>目标元素

处理事件

事件冒泡是 从目标元素——>body——>html——>document——> windows

所以事件会被触发两次,所以要阻止事件的冒泡

5、为什么要清除浮动元素? 怎么清除?

你可能感兴趣的:(前端知识积累之——JS篇)