新版语法 - 箭头函数 ¶
作者:KK
发表日期:2018.10.14
要点速读 ¶
function(a, b){ return 1 + b - a }
等同于(a, b) => 1 + b - a
,你当成是函数的简写方式。
介绍 ¶
由于写JS的时候经常要用到函数,比如xxx.click(function(){ ... })
,为了简化这种编码工作,在ES2016中推出了箭头函数:
xxx.click(function(参数1, 参数2){
return 参数1 + 参数2;
})
xxx.click((参数1, 参数2) => {
return 参数1 + 参数2;
}) //这样
xxx.click((参数1, 参数2) => 参数1 + 参数2) //这样也行,省了return
xxx.click((参数1, 参数2) => ({a: 参数1, b:参数2})) //如果要返回一个对象,由于对象有花括号包住可能会干扰原来的语法,于是外层包个括号就好了
xxx.click(只有一个参数 => 只有一个参数 + 999) //一个参数就连参数表的括号都可以省了
总的来说我个人觉得太繁杂……不太理解为什么要搞这么多种,让人有点不适应。
this指向上一级上下文,没有arguments ¶
let obj = {
age: 999,
aaa: function(){
console.log(this.age); // 999
console.log(arguments); // x y z
},
bbb: () => {
console.log(this.age); // undefined 因为this不是指向obj,而指向调用这个方法的空间,bbb在() 哪里调用?在全局,全局属于window的空间,所以this指向了window
console.log(arguments); //报错说这个不存在
}
};
obj.aaa('x', 'y', 'z');
obj.bbb('x', 'y', 'z');
所以如果jQuery里面的事件要用到this
来访问 dom 对象的话,就不能用箭头函数了,原则上我所有 jQuery 事件回调都不会用箭头函数;但是大部分其它回调还是可以用的,比如 ajax 的回调,以及 node.js 各种模块的回调。