你不了解的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)
        }
    }
}
posted @ 2025-06-04 21:38  永生辉皇  阅读(7)  评论(0)    收藏  举报