JS语法:词法作用域 动态作用域 箭头函数 this

前端之家收集整理的这篇文章主要介绍了JS语法:词法作用域 动态作用域 箭头函数 this前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

箭头函数看上去是匿名函数的一种简写,但实际上,箭头函数和匿名函数有个明显的区别:箭头函数内部的this是词法作用域,由上下文确定。

var obj = {
    birth: 1990,getAge: function () {
        var b = this.birth; // 1990
        var fn = () => new Date().getFullYear() - this.birth; // this指向obj对象
        return fn();
    }
};
obj.getAge(); // 25

词法作用域(lexical scope)等同于静态作用域(static scope)。所谓的词法作用域其实是指作用域在词法解析阶段既确定了,不会改变。

  • 箭头函数就是个简写形式的函数表达式,并且它拥有词法作用域的this值(即不会新产生自己作用域下的this,arguments,super 和 new.target 等对象)。此外,箭头函数总是匿名的。

  • 箭头函数则会捕获其所在上下文的 this 值,作为自己的 this 值,因此下面的代码将如期运行。

  • 使用 new 操作符 (箭头函数不能用作构造器,和 new 一起用就会抛出错误。)

箭头函数,就是没有自身this属性函数。直接在它的静态作用域找最近的函数的this.
非严格模式,函数this初始化为window/global;严格模式,函数初始化为undefined.(当然,普通函数this有绑定(指向引用)时,内部的箭头函数this指向便是此引用)

我想说啥,其实是 箭头函数只会沿着它的作用链找到最近的普通函数为止。(因为有this初始化啊)

使用注意

new Promise((res) => {res();}) //true

new Promise((res) => res()) //true

new Promise((res) => res();) //error

猜你在找的程序笔记相关文章