JavaScript中Arrow函数的执行上下文位于何处?
关于箭头函数执行上下文的解答
听起来你已经把普通JavaScript函数的执行上下文概念理解得很透彻了,这真的很棒!那咱们来拆解箭头函数的特殊之处——箭头函数根本没有属于自己的独立执行上下文。
和你例子里的普通Foo函数不同:
function Foo() { // 每次调用Foo时,都会创建一个全新的专属执行上下文 }
箭头函数从定义它的词法作用域(也就是它被声明时所在的外层作用域)直接继承执行上下文,不会自己创建新的。
拿你写的箭头函数代码举例:
const ArrowFoo = () => { // 这里并没有ArrowFoo自己的执行上下文! // 如果ArrowFoo是在全局作用域定义的,它就用全局执行上下文; // 如果是在另一个普通函数内部定义的,就用那个外层函数的执行上下文 }
再补充几个关键特性帮你理解:
- 箭头函数没有自己的
this、arguments、super或new.target,这些值全部来自它继承的外层执行上下文 - 正因为没有自己的执行上下文,箭头函数不能被用作构造函数(不能用
new关键字调用)
内容的提问来源于stack exchange,提问作者AmerllicA
相关产品推荐
相关产品推荐

