1.let变量的暂时性死区问题
本题中在{}内部的作用域中,因为有let的声明let x=20;但是在console.log(x);之后,此时,x还没有被初始化,因此会报错referenceError。
注意:与var不同,let变量的声明可以提升,但是初始化不能被提升(var x=20;会变量提升为var x,并且给x一个undefined初值。而let x=20;会被提升为let x;并没有给x初值,因此就会出现let的暂时性死区问题)
2.CSS和JS对DOM树解析和渲染的阻塞问题
CSS不会阻塞DOM树的解析,但是会阻塞DOM树的渲染,也会阻塞js代码的执行
JS会阻塞DOM树的解析,也会阻塞DOM树的渲染,但是会偷看DOM树,让有关的资源(css资源)预先加载。
3.删除数组中第i个元素的方法
arr.splice(i-1,1)。
第一个参数:起始位置
第二个参数:数量
返回值:删除的内容(这里是第i个元素)
原始数组arr发生了变化
4.this的指向问题
回调函数中的this指向的是Windows对象,箭头函数中的this指向的是上下文。
例子:
btn.οnclick=function(){
setTimeout(function(){this....},1000)
}
如上的this指向的是window
btn.οnclick=function(){
setTimeout(()=>{this....},1000)
}
如上的this指向的是上下文btn