美文网首页让前端飞
撤底理解es6中的箭头函数

撤底理解es6中的箭头函数

作者: 龙旗飘扬的舰队 | 来源:发表于2019-02-15 10:36 被阅读0次

本质上

  • 是一个函数,是function
  • 是一个被编译层加工过的函数
  • 用 babel 编译一下箭头函数看看,如下
//es6
const a = ()=>{ console.log(this) };

const b = ()=>{ console.log(arguments) }

function aaa(){
    const c = ()=>{ console.log(this) };
    c();
}
aaa();

function bbb(){
    const c = ()=>{ console.log(arguments) };
    c();
}
bbb()
//编译后
var a = function a() {
  console.log(undefined);
};

var _arguments = arguments;
var b = function b() {
  console.log(_arguments);
};

function aaa() {
  var _this = this;

  var c = function c() {
    console.log(_this);
  };
  c();
}
aaa();

function bbb() {
  var _arguments2 = arguments;

  var c = function c() {
    console.log(_arguments2);
  };
  c();
}
bbb();

特性解密

  • 内部没有 this,也没有 arguments

==this==

  • 单独调用时,内部没有 this,因为在编译时被替换成了 undefined
  • 但是,如果其外层存在 this(一个普通函数),那么编译时会将外层的 this 传入箭头函数内部,使其“具有了” this

==arguments==

  • 其内部的 arguments 和 this 的表现略有不同。不管是否单独调用箭头函数,arguments 都来自于外部传入,使其“具有了” arguments

==柯里化==

  • 实际上这种调用方式,就是柯里化一个函数的一种实现方式(或者语法糖)
//es6
const sum = num1 => num2 => num3 => num1 + num2 + num3;
//编译后
var sum = function sum(num1) {
  return function (num2) {
    return function (num3) {
      return num1 + num2 + num3;
    };
  };
};

不适合用箭头函数的情形

  • 在对象上定义函数
  • 在原型上定义函数
  • 动态上下文中的回调函数,比如 dom 点击事件回调
  • 太过复杂的函数

相关文章
箭头函数没有绑定this

相关文章

  • 撤底理解es6中的箭头函数

    本质上 是一个函数,是function 是一个被编译层加工过的函数 用 babel 编译一下箭头函数看看,如下 特...

  • ES5和ES6中的this问题及注意事项(附带少许作用域链查找知

    本文参考以下文章: 1、深入理解ES6箭头函数的this以及各类this面试题总结 2、深入理解ES6箭头函数中的...

  • 箭头函数的理解

    箭头函数的理解: ES6中新增的一个特性:=> 箭头函数的一些注意事项: 箭头函数中的this是函数定义时所在的对...

  • 箭头函数与普通函数的区别

    箭头函数与普通函数的区别,实质是我们是否理解了箭头函数,在我刚开始接触ES6时,印象中的箭头函数与普通函数的区别就...

  • 基础面试3

    1.怎么理解es6箭头函数中的this,它和一般函数的this指向有什么区别呢?在箭头函数中没有自己的this,它...

  • 深入理解ES6中的箭头函数

    JavaScript深入理解ES6中的箭头函数 箭头函数表达式的语法比函数表达式短,并且不绑定自己的 this,a...

  • ES6箭头函数简介

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

  • ES6-箭头函数

    箭头函数中的this ES6函数参数默认值 箭头函数不适用的场景

  • 箭头函数

    1,箭头函数定义 2,Es6 中箭头函数参数与返回值简写 补充 3,箭头函数中 this 指向 注:箭头函数中的t...

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

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

网友评论

    本文标题:撤底理解es6中的箭头函数

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