ES6箭头函数的特性

箭头函数是匿名函数,不绑定自己的this,arguments,super,new.target

  • 箭头函数会捕获其所在上下文的this值,作为自己的this值,在使用call/apply绑定时,相当于只是传入了参数,对this没有影响
let myObject = {
    value:1,
    add:function(a){
        let f = (a) => a + this.value;
        return f(a);
    },
    addCall:function(a){
        let f = (a) => a + this.value;
        let b = {value:2};
        return f.call(b,a);
    }
};
console.log(myObject.add(1));        //2
console.log(myObject.addCall(1));    //2
  • 箭头函数不绑定arguments,取而代之用rest参数…解决
const fun = (...args)=>{
    console.log(args) //数组形式输出参数
};
fun(1,2,3);  // [ 1, 2, 3 ]

//普通函数可以使用arguments
function log() {
    console.log.apply(console,arguments);
}
log(1,2,3);  //1 2 3
  • 箭头函数当方法使用的时候,没有定义this绑定
const obj = {
    i: 10,
    b: () => console.log(this.i),
    c: function() {
        console.log( this.i)
    }
}
obj.b(); //undefined
obj.c(); //10
  • 箭头函数不能作为构造函数,和 new 一起用就会抛出错误
const Foo = () => {};
new Foo(); 
// TypeError: Foo is not a constructor
  • 箭头函数没有原型属性
const Foo = () => {};
console.log(Foo.prototype); 
// undefined
  • 不能简单返回对象字面量
let func = () => { foo: 1 };
console.log(func());  //undefined

//如果要返回对象字面量,用括号包裹字面量
let func = () => ({ foo: 1 });
console.log(func());   //{ foo: 1 }
  • 箭头函数不能当做Generator函数,不能使用yield关键字
  • 箭头函数不能换行

参考文章推荐
箭头函数
箭头函数与普通函数的区别

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 在此处先列下本篇文章的主要内容 简介 next方法的参数 for...of循环 Generator.prototy...
    醉生夢死阅读 1,463评论 3 8
  • 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数l...
    呼呼哥阅读 3,494评论 0 1
  • 以下内容是我在学习和研究ES6时,对ES6的特性、重点和注意事项的提取、精练和总结,可以做为ES6特性的字典;在本...
    科研者阅读 3,160评论 2 9
  • 1.函数参数的默认值 (1).基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。
    赵然228阅读 708评论 0 0
  • 一、ES6简介 ​ 历时将近6年的时间来制定的新 ECMAScript 标准 ECMAScript 6(亦称 ...
    一岁一枯荣_阅读 6,127评论 8 25