JS箭头函数
简述
箭头函数是es6新增的函数定义语法,它是一种匿名函数写法,类似于java中的lambda函数。
普通函数和匿名函数
对于在js中,你可以这样定义一个普通函数
function sum(a, b) { return a + b }
你也可以把定义给一个变量赋值,我们称为匿名函数,可以使用这个变量进行函数调用
const sum = function (a, b) { return a + b }
console.log(sum(1,1));
箭头函数
箭头函数指使用使用类似 ()=>{} 的形式定义的函数,箭头函数也是匿名函数的一种
const sum = (x,y) => { return x+y; }
当函数体只有一行return语句时,return和花括号都可以省略
const sum = (x,y) => x+y;
当参数只有一个的时候,小括号可以省略
const sum = x => x+3;
箭头函数的this
普通函数的this和调用者有关,详情请看this指向问题
除了bind、apply、call等方法对this的影响,箭头函数中的this是由外层上下文作用域决定的
箭头函数中的this指向的是定义时的this,而不是执行时的this
像这样定义函数第二层的this是window,因为是由window对象调用第二层函数
let a = { name: "xiaoming", age: 18, getSing: function () { console.log("第一层",this); function dance(){ console.log("第二层",this); return "dance"; } return dance(); } } a.getSing();
但如果我们使用箭头函数
let a = { name: "xiaoming", age: 18, getSing: function () { console.log("第一层", this); let dance = () => { console.log("第二层", this); return "dance"; } return dance(); } } a.getSing();
此时箭头函数里的this就会指向getSing函数里的this,即object对象
所以我们如果在定义类的时候,想让当前函数的this指向object对象,就把一层层函数都定义成箭头函数
箭头函数没有Prototype和构造函数
js中的中的Function或者Class中都会有一个Prototype属性,这个可以用于对象拷贝或者继承
但箭头函数某得,所以不能通过new实例化箭头函数
Reference
https://www.cnblogs.com/dangjf/p/13560505.html
https://zhuanlan.zhihu.com/p/136732548
https://zhuanlan.zhihu.com/p/57204184
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
2020-07-25 Basic Gcd Problem 线性筛