一、load和DOMContentLoaded的区别
浏览器加载页面步骤
1、解析html结构
2、加载外部脚本文件和样式
3、解析并执行脚本代码,部分脚本会阻塞
4、DOM树构建完成。//DOMContentLoaded 事件
5、加载图片等外部文件,我感觉是一些异步请求??
6、页面加载完毕 //load事件
var a = 123;
var b = 666;
//DOMContentLoaded事件是document的
document.addEventListener('DOMContentLoaded',function(){
console.log(this);//this指向的是document,谁调的函数this就指向谁
console.log(a);
},false);
//load事件是window的,怪不得刚写document一直没反应
window.addEventListener('load',function(){
console.log(a);
},false);
这样的写法好像不能传入参数
二、怎么传参数?用闭包
var c = 888
document.addEventListner('DOMContentLoaded',(function(val){
return function(e){
console.log(val);
console.log(e);
}
})(c),false);
//这样可以同时传入事件和参数,return的function里的val保留了对传入参数的引用。
//如果内部return的函数写成function(val)就不行了,这个val还是event而不是我想要传入的参数
三、事件代理与事件委托函数
用e.target.matches("#id")来判断发生事件的target是不是我们要的那个。
querySelector()返回符合css选择器的第一个元素
querySelectorAll()返回一个数组
四、const
const声明时就要赋值,而且之后不可以改动
五、promise对象