一、定义
const aa = (参数列表) => {}
x => x * x
相当于
function (x) {
return x * x;
}
二、参数问题和返回值
当只有一个参数时,参数可以不加括号,当大于一个就需要加上括号了。当然执行语句只有一行时,大括号也可省略:
const mul =(sum1,sum2) => sum1 + sum2
如果要返回一个对象,就要注意,如果是单表达式,这么写的话会报错:
//语法错误
x => { foo: x }
//要改为
x => ({ foo: x })
三、箭头函数的this
在之前的匿名函数调用中,以函数形式调用的this的执行是指向的window的,而在箭头函数就不一样。箭头函数的this指向由其上层作用域里的this决定,就算调用call方法也不能改变:
var obj = {
birth: 1999,
getAge: function () {
var b = this.birth; // 1999
var fn = () => new Date().getFullYear() - this.birth; // this指向obj对象
return fn();
}
};
obj.getAge(); // 21(参照2020年)
所以使用箭头函数后以前的那种实现保存this值的写法:
var _this = this;
就不再需要了~~~
五、不能作为构造函数实例化对象
let Person = (name,age) => {
this.name = name;
this.age = age;
}
let me = new Person('xiaohu',20);
console.log(me);
六、不能使用arguments变量
let fn1 = () => {
console.log(arguments);
}
fn1(1,2,3);
七、来个练习
练习:使用sort数组排序
const arr = [1,23,5,4];
arr.sort((a,b) => a-b)//这里如果加上{}就要添加return 不然得出结果是没有变化的
console.log(arr);