JavaScript 箭头函数
ES6 中引入了箭头函数。
箭头函数允许我们编写更短的函数:
语法
let myFunction = (a, b) => a * b;
之前:
hello = function() { return "Hello World!"; }
用了箭头函数之后:
hello = () => { return "Hello World!"; }
确实变短了!如果函数只有一个语句,并且该语句返回一个值,则可以去掉括号和 return
关键字:
箭头函数默认返回值:
hello = () => "Hello World!";
注释:这仅在函数只有一条语句时才有效。
如果您有参数,则将它们传递到括号内:
带参数的箭头函数:
hello = (val) => "Hello " + val;
事实上,如果只有一个参数,您也可以略过括号:
不带括号的箭头函数:
hello = val => "Hello " + val;
this
怎么办?
与常规函数相比,箭头函数对 this
的处理也有所不同。
简而言之,使用箭头函数没有对 this
的绑定。
在常规函数中,关键字 this
表示调用该函数的对象,可以是窗口、文档、按钮或其他任何东西。
对于箭头函数,this
关键字始终表示定义箭头函数的对象。
让我们看两个例子来理解其中的差异。
这两个例子都调用了两次方法,第一次是在页面加载时,第二次是在用户单击按钮时。
第一个例子使用常规函数,第二个例子使用箭头函数。
结果显示第一个例子返回两个不同的对象(window 和 button),第二个例子返回两次 window 对象,因为 window 对象是函数的“所有者”。
实例
对于常规函数,this 表示调用该函数的对象:
// 常规函数: hello = function() { document.getElementById("demo").innerHTML += this; } // window 对象调用该函数: window.addEventListener("load", hello); // button 对象调用该函数: document.getElementById("btn").addEventListener("click", hello);
实例
用了箭头函数,则 this
表示函数的拥有者:
// 箭头函数: hello = () => { document.getElementById("demo").innerHTML += this; } // window 对象调用该函数: window.addEventListener("load", hello); // button 对象调用该函数: document.getElementById("btn").addEventListener("click", hello);
使用函数时请记住这些差异。有时,常规函数的行为正是您想要的,如果不是,请使用箭头函数。
浏览器支持
下表注明了首个完全支持 JavaScript 箭头函数的浏览器版本:
Chrome | IE | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 45 | Edge 12 | Firefox 22 | Safari 10 | Opera 32 |
2015 年 9 月 | 2015 年 7 月 | 2013 年 5 月 | 2016 年 9 月 | 2015 年 9 月 |
1.本站内容仅供参考,不作为任何法律依据。用户在使用本站内容时,应自行判断其真实性、准确性和完整性,并承担相应风险。
2.本站部分内容来源于互联网,仅用于交流学习研究知识,若侵犯了您的合法权益,请及时邮件或站内私信与本站联系,我们将尽快予以处理。
3.本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
4.根据《计算机软件保护条例》第十七条规定“为了学习和研究软件内含的设计思想和原理,通过安装、显示、传输或者存储软件等方式使用软件的,可以不经软件著作权人许可,不向其支付报酬。”您需知晓本站所有内容资源均来源于网络,仅供用户交流学习与研究使用,版权归属原版权方所有,版权争议与本站无关,用户本人下载后不能用作商业或非法用途,需在24个小时之内从您的电脑中彻底删除上述内容,否则后果均由用户承担责任;如果您访问和下载此文件,表示您同意只将此文件用于参考、学习而非其他用途,否则一切后果请您自行承担,如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。
5.本站是非经营性个人站点,所有软件信息均来自网络,所有资源仅供学习参考研究目的,并不贩卖软件,不存在任何商业目的及用途
暂无评论内容