你不了解的JS笔记 - 第一部分- 附录
词法作用域是在写代码或者说定义时确定的,而动态作用域是在运行时确定的,词法作用域关注函数在何处声明,而动态作用域关注函数从何处调用
ES6之前可以用catch实现let的效果
{
try {
throw undefined;
}catch(a){
a=2
console.log(a)
}
}
console.log(a)
箭头函数放弃了普通this绑定的规则,取而代之的是用当前的词法作用域覆盖了this本来的值
var obj = {
count:0,
cool: function coolFn(){
if(this.count<1){
setTimeout(()=>{
this.count++;
})
}
}
}
相当于:
var obj = {
count:0,
cool: function coolFn(){
var self = this
if(self.count<1){
setTimeout(function timer()=>{
self.count++;
})
}
}
}
相当于:
var obj = {
count:0,
cool: function coolFn(){
if(this.count<1){
setTimeout(function timer()=>{
this.count++;
}.bind(this),100)
}
}
}

浙公网安备 33010602011771号