初探ES6:箭头函数

作者: 枸杞辣条 | 来源:发表于2017-03-16 14:42 被阅读380次

如需转载请注明来源,喜欢的朋友们点个赞,蟹蟹~~~

如有错误,请批评指正!

关键词:()=>{},this

先看一个简单的例子:

()=>console.log(1)

//上述代码与一下等同:
function(){
  return conosle.log(1)
}

箭头函数语法:

(arg) => { //dosomething } 
//等同于:
function( arg ){
    //dosomething
}

当然,不同情况有不同的变换:

  1. 只有一个参数:
  a => { console.log(1) }
  //可以省略括号,也可以不省略,后面的大括号稍后讲解
  1. 至少2个参数:
(a,b)=>{ //dosomething }
//在有至少2个参数的情况必须加括号~~
  1. 无参数:
()=>{ //dosomething }
//无参数以一个括号来表示

现在来说一下后面代码块加大括号和不加:
首先:如果你的代码多于一条语句以上,一定要用大括号来包裹。示范点击
其次:如果你只有一条语句并且没有使用大括号,它会默认return,而如果你加了大括号需要自己手动return。

var b=0;
let f1 = ()=>b;
console.log(f1());// 打出0 
//-------
let f2 = ()=>{ ++b };
console.log(f2()) //打出undefined

示范点击

接下里用一个更加详细的范例(箭头函数是写回调函数的最好用法):

//现在我们来给数组排个序(用sort方法):
let arr = [ 3,1,10,6  ]
//一般我们是这样写的
arr.sort(function(a,b){
  return a-b
})
//现在我们用箭头函数这样写:
arr.sort( (a,b)=> a-b )
console.log(arr)

示例点击

补充:箭头函数的立即执行函数写法:
  var a=0;
  (() => console.log(a))()
// 如果你想传入参数可以在最后面的括号写入 
//或者:
( ()=>{ console.log(a) } )(a)

示例点击

接下来是一些使用的注意:

(1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。(所以如果你使用了箭头函数就不允许使用call,apply,bind)
(2)不可以当作构造函数,也就是说,不可以使用new命令,否则会抛出一个错误。
(3)不可以使用arguments对象,该对象在函数体内不存在。如果要用,可以用Rest参数代替。
(4)不可以使用yield命令,因此箭头函数不能用作Generator函数。

这里说一下箭头函数的this :

  • 首先,箭头函数本身没有this。
  • 其次,对象内直接调用箭头函数的this固定是在全局也就是window。
  • 但是,也有例外,比如你在一个函数里面调用箭头函数,箭头函数的this指向的是父层函数的this

上代码:

var age = 0;
  let obj = {
    age : 99,
    fn1 : ()=>{ console.log(this.age) },
    fn2 : function(){ console.log(this.age) }
  }
obj.fn1();//0,由于是在对象内直接调用所以指向window,哪怕你在obj外面再加一个对象,指向也是window
obj.fn2();//99正常的打印

之后我们用一层函数包裹箭头函数并调用它:

var age=0;
let obj = {
  age:99,
  fn1 : function(){
    let f = ()=>console.log(this.age);
  }
}
obj.fn1();//打印99,因为箭头函数f会找到fn1的this,而fn1的this是obj。

相关文章

  • ES6箭头函数简介

    @(JS技巧)[ES6|箭头函数] ES6箭头函数(Arrow Functions) ES6可以使用“箭头”(=>...

  • es6全家桶(二)—— 箭头函数

    es6全家桶(二)—— rest参数、箭头函数 箭头函数 ES6 允许使用“箭头”(=>)定义函数。 var f ...

  • es6、js、css、jquery、vue以及程序设计 知识点总

    es6 列举常用的es6特性。 箭头函数this的指向。 eg:箭头函数的特性 箭头函数内部没有construc...

  • 箭头函数

    ES6允许使用“箭头”(==>)定义函数。 箭头函数 等同于

  • 初探ES6:箭头函数

    如需转载请注明来源,喜欢的朋友们点个赞,蟹蟹~~~ 如有错误,请批评指正! 关键词:()=>{},this 先看一...

  • 学习 ES 6 箭头函数

    箭头函数的用法 ES6 允许使用“箭头”(=>)定义函数。 箭头函数的一个用处是简化回调函数。 箭头函数 this...

  • JavaScript箭头函数

    ES6新语法箭头函数 箭头函数是ES6新语法,因为语法简单、可读性好,所以使用的也很多。箭头函数也是匿名函数,区别...

  • 关于ES6箭头this的指向问题

    ES6 允许使用 “ 箭头 ” (=>)定义函数。 箭头函数 填 坑。 this的指向是 向上查找 非箭头函数的...

  • ES6箭头函数(Arrow Functions)

    箭头函数是什么?(What) 箭头函数 (Arrow Functions)也称“胖箭头函数”,是ES6全新的特性。...

  • 2019-01-11

    ES6 箭头函数 箭头函数表示法:()=>console.log('Hello') 箭头函数和普通函数的区别 和普...

网友评论

    本文标题:初探ES6:箭头函数

    本文链接:https://www.haomeiwen.com/subject/fryrnttx.html