You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript箭头函数与普通函数中this的差异及原因咨询

箭头函数与普通函数中this值差异的通俗解析

先看你给出的两段代码及执行结果:

第一段:箭头函数示例

let myObject = { objectName: () => { console.log(this); } };
myObject.objectName();

执行输出:{ }

第二段:普通函数示例

let myObject = { objectName: function() { console.log(this); } };
myObject.objectName();

执行输出:{ objectName: [Function: objectName] }

为什么会有这种差异?

核心原因是箭头函数和普通函数的this绑定规则完全不一样:

  • 普通函数的this:“调用时绑定”
    普通函数的this就像个“墙头草”,它的值完全由谁调用它决定。比如第二段代码里,objectName是被myObject这个对象调用的(myObject.objectName()),所以this就直接指向调用它的myObject,输出自然包含了myObject里的objectName函数。

  • 箭头函数的this:“定义时继承”
    箭头函数根本不会自己创建属于自己的this,它的this是从定义它的外层作用域“继承”过来的,而且一旦确定就再也不会变。在你的第一段代码里,箭头函数是在全局作用域下定义的(let myObject属于全局上下文),当前环境中全局作用域的this是一个空对象,所以箭头函数就继承了这个空对象的this——哪怕你用myObject去调用它,它也不会改变自己的this指向。

简单总结:普通函数看“谁调用”,箭头函数看“在哪出生”。

内容的提问来源于stack exchange,提问作者zorro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:10:45