箭头函数如何在其范围内向上工作,直到找到一个值?

我正在阅读一本 javascript 书,下面是作者描述的示例:


let myObject = {

    greeting: "Hi, there",

    getWriter() {

        return (message) => console.log(`${this.greeting}, ${message}`);

    }

}


myObject.getWriter()("It is raining today");

当调用 getWriter 返回的箭头函数时,它会在其范围内向上工作,直到找到 this 的值。因此,调用 getWriter 函数的方式决定了箭头函数的 this 值。


我有点明白这个想法,但对细节感到困惑,所以getWriter()首先被调用,然后箭头函数被调用,但是箭头函数如何工作到它的范围以确定 this 值是myObject什么?我的意思是什么时候getWriter()被调用,这个函数的作用域在这个函数完成时结束,箭头函数不应该知道它自己是从 getWriter 函数返回的吗?


qq_笑_17
浏览 175回答 2
2回答

拉莫斯之舞

考虑到箭头函数是this在评估时捕获词法值的表达式,以供稍后调用时使用,这可能会有所帮助。myObject.getWriter()("It is raining today");调用getwriter作为方法myObject并通过这样做导致在执行期间getwriter具有 this 值myObject。(message) => console.log(`${this.greeting}, ${message}`)当getwriter评估该表达(每一次getwriter被调用)它产生其使用中的箭头函数对象this由看出值getwriter。因此,该函数返回由getwriter用途this的价值呼唤到getwriter,这可能取决于它如何被调用
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript