JS中箭头函数=>的最全用法及详细讲解
创始人
2024-05-31 06:49:13
0

概述

JS中=>是箭头函数,是ES6标准中新增的一种新的函数。箭头函数表达式的语法比函数表达式更简洁,并且没有自己的this,arguments,super或new.target。箭头函数表达式更适用于那些本来需要匿名函数的地方,并且它不能用作构造函数。
基础语法

(param1, param2, …, paramN) => { statements }
(param1, param2, …, paramN) => expression
//相当于:(param1, param2, …, paramN) =>{ return expression; }
// 当只有一个参数时,圆括号是可选的:
(singleParam) => { statements }
singleParam => {statements }
// 没有参数的函数应该写成一对圆括号:
() => { statements }

简单示例

	x => x * x

即相当于:

	function (x) {return x * x;}

更短的函数示例

	    var elements = ['Hydrogen','Helium','Lithium','Beryllium'];elements.map(function(element) { return element.length; }); // 返回数组:[8, 6, 7, 9]// 上面的普通函数可以改写成如下的箭头函数elements.map((element) => {return element.length;}); // [8, 6, 7, 9]// 当箭头函数只有一个参数时,可以省略参数的圆括号elements.map(element => {return element.length;}); // [8, 6, 7, 9]// 当箭头函数的函数体只有一个 `return` 语句时,可以省略 `return` 关键字和方法体的花括号elements.map(element => element.length); // [8, 6, 7, 9]// 在这个例子中,因为我们只需要 `length` 属性,所以可以使用参数解构// 需要注意的是字符串 `"length"` 是我们想要获得的属性的名称,而 `lengthFooBArX` 则只是个变量名,// 可以替换成任意合法的变量名elements.map(({ "length": lengthFooBArX }) => lengthFooBArX); // [8, 6, 7, 9]

三元运算符示例
箭头函数也可以使用条件(三元)运算符:

    var simple = a => a > 15 ? 15 : a;simple(16); // 15simple(10); // 10let max = (a, b) => a > b ? a : b;

不与new一起使用
箭头函数不能用作构造器,和 new一起用会抛出错误。

    var Foo = () => {};var foo = new Foo(); // TypeError: Foo is not a constructor

没有prototype属性
箭头函数没有prototype属性。

    var Foo = () => {};console.log(Foo.prototype); // undefined

函数体
箭头函数可以有一个“简写体”或常见的“块体”。

在一个简写体中,只需要一个表达式,并附加一个隐式的返回值。在块体中,必须使用明确的return语句。

    var func = x => x * x;                  // 简写函数 省略return(简写体)var func = (x, y) => { return x + y; }; //常规编写 明确的返回值(块体)

箭头函数递归

    var fact = (x) => ( x==0 ?  1 : x*fact(x-1) );fact(5);       // 120

浏览器兼容性

结语
更多关于箭头函数的详细介绍可参看JS最新的参考文档:箭头函数 - JavaScript

相关内容

热门资讯

自治区财政下达高新技术企业、“... 转自:草原云春潮涌动,助企正当时。申报高新技术企业获得补助,提高了企业应对市场风险、提高发展质量和水...
5.12致敬白衣天使 转自:北京时间 【#5.12致敬白衣天使#】#她是个护士...
5分钟 飙涨近50% 今日早盘,港股三大指数高开高走,恒生科技指数一度涨近3%。截至午间收盘,恒生指数涨0.93%,恒生国...
每周6000+国际航班 外籍游...   民航局消息,今年以来,我国民航国际客运航线网络不断拓展,国际航班量和旅客量进一步增加。  我国通...
​万亿“宁王”,定了! 【导读】宁德时代拟5月20日在港股上市,募资总额将达40亿至50亿美元中国基金报记者 邱德坤5月12...
双向奔“富”:东货西进与西产东... 当西藏牧民巴特尔在海拔4000米的牧场签收到来自山东菏泽的A级芍药时,横亘在西部与东部之间的地理鸿沟...
机构对黄金持续看好,黄金ETF... 截至2025年5月12日 11:30,黄金ETF基金(159937)下跌1.77%,最新报价7.38...
今日75只股长线走稳 站上年线 证券时报·数据宝统计,截至今日上午收盘,上证综指3354.53点,收于年线之上,涨跌幅为0.37%,...
专访丨不确定性加剧背景下巴中深... 新华社巴西利亚5月11日电 专访|不确定性加剧背景下巴中深化合作具有重要意义——访巴西出口投资促进局...
万泽股份跌2.03%,成交额9... 5月12日,万泽股份盘中下跌2.03%,截至13:02,报15.44元/股,成交9444.31万元,...
南方路机涨2.27%,成交额5... 5月12日,南方路机盘中上涨2.27%,截至13:00,报25.63元/股,成交5301.33万元,...
万亿“宁王” 定了! 5月12日,宁德时代披露发行阶段董事会公告及注册招股书,宣布正式启动国际配售簿记,预计5月20日在港...
【西部量化】基金定量研究系列(... (转自:西部证券研究发展中心)本文构建了5个基金特征因子、18个基金净值因子(RBPs),以及11个...
宁德时代动力电池技术获国际航空... 格隆汇5月12日|宁德时代宣布,近日通过AS9100航空航天质量管理体系认证,该认证是由国际航空航天...
融捷股份涨2.01%,成交额7... 5月12日,融捷股份盘中上涨2.01%,截至13:01,报28.87元/股,成交7917.36万元,...
南天信息涨2.08%,成交额2... 5月12日,南天信息盘中上涨2.08%,截至13:01,报19.17元/股,成交2.78亿元,换手率...
粽子里吃出带血创可贴?来伊份:... 5月10日有网友发视频投诉在来伊份买的粽子中吃出疑似带血创可贴“给小孩喂粽子在里面发现了异物(是)创...
让文明成为生活方式,杨浦第二届... 转自:上观新闻日前,上海杨浦第二届文明生活节在长阳创谷举办。市民群众走上城市文明开放麦舞台,观摩文明...
伊外长:可调整铀浓缩水平以与美... 转自:上观新闻据俄罗斯卫星通讯社5月12日报道,伊朗外交部长阿巴斯·阿拉格齐表示,德黑兰不会在铀浓缩...
天蓝水碧迎盛会 转自:廊坊日报 初夏的廊坊绿意盎然。随着2025年廊洽会临近,廊坊精心改善城市环境,提升城市...