一、定义

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);
Last modification:September 29, 2020
如果觉得我的文章对你有用,请随意赞赏