前端知识积累之——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、为什么要清除浮动元素? 怎么清除?