美文网首页
ES6----箭头函数

ES6----箭头函数

作者: 字母31 | 来源:发表于2017-10-15 15:40 被阅读0次

1、基本用法

在ES6中允许使用箭头()=>来定义函数。

var f = v => v;
//等同于
var f = function(v) {
  return v;
};

如果函数不需要参数或者需要多个参数就使用圆括号来代替。

var f = () => 5;
// 等同于
var f = function () { return 5 };

var sum = (num1, num2) => num1 + num2;
// 等同于
var sum = function(num1, num2) {
  return num1 + num2;
};

箭头函数可以与解构赋值同时使用。

const full = ({ first, last }) => first + ' ' + last;

// 等同于
function full(person) {
  return person.first + ' ' + person.last;
}

箭头函数可以简化函数代码,尤其是回调函数的简化。

// 正常函数写法
[1,2,3].map(function (x) {
  return x * x;
});

// 箭头函数写法
[1,2,3].map(x => x * x);

2、使用时注意事项

1)函数中的this是定义函数时的this,而不是使用函数时的this,也就是说箭头函数中的this是固定的。

function foo() {
  setTimeout(() => {
    console.log('id:', this.id);
  }, 100);
}

var id = 21;

foo.call({ id: 42 });
// id: 42

上面的例子中,使用了箭头函数,this指向foo而不是window。
根据这一特性我们可以用来封装回调函数。
2)不可以当作构造函数,也就是说,不可以使用new命令,否则会报错。由于箭头函数没有自己的this,所以当然也就不能用call()、apply()、bind()这些方法去改变this的指向。
箭头函数可以绑定this对象,大大减少了显式绑定this对象的写法(call、apply、bind)。但是,箭头函数并不适用于所有场合,所以ES7提出了“函数绑定”(function bind)运算符,用来取代call、apply、bind调用。虽然该语法还是ES7的一个提案,但是Babel转码器已经支持。函数绑定运算符是并排的两个冒号(::),双冒号左边是一个对象,右边是一个函数。该运算符会自动将左边的对象,作为上下文环境(即this对象),绑定到右边的函数上面。

相关文章

  • ES6----箭头函数

    1、基本用法 在ES6中允许使用箭头()=>来定义函数。 如果函数不需要参数或者需要多个参数就使用圆括号来代替。 ...

  • 吃透ES6----简洁优雅的箭头函数

    基本用法 箭头函数可能是ES6最有特点的新特性了,它不仅可以让代码变得优美,而且更直观利于理解。 如果箭头函数不需...

  • ES6----箭头函数不适合场景

    前言 连续两天推送不管是吐槽式还是微观落地式的,不知道对你的“世界观”有所改变。在编辑这篇文章的时候刚好跟同事在聊...

  • ES6~箭头函数

    什么是箭头函数 单表达式箭头函数 相当于 多表达式箭头函数 箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有...

  • 箭头函数和立即执行函数

    箭头函数 箭头函数和普通函数有什么区别?如果把箭头函数转换为不用箭头函数的形式,如何转换主要是this的差别,箭头...

  • 学习 ES 6 箭头函数

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

  • 箭头函数

    箭头函数 箭头函数能让this的指向固定化 分析:1)第一个setInterval()中使用了箭头函数,箭头函数使...

  • TS  笔记this

    this 箭头函数在箭头函数创建的地方获得this;非箭头函数,在调用函数的地方获得this如图

  • 箭头函数和数组

    箭头函数&数组 箭头函数 特点: 没有 this 没有 arguments 没有prototype在箭头函数中使用...

  • 箭头函数

    箭头函数 为什么使用箭头函数

网友评论

      本文标题:ES6----箭头函数

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