本质上

  • 是一个函数,是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中的箭头函数相关推荐

  1. JS ES6中的箭头函数(Arrow Functions)使用

    转载这篇ES6的箭头函数方便自己查阅. ES6可以使用"箭头"(=>)定义函数,注意是函数,不要使用这种方式定义类(构造器). 一.语法 基础语法 (参数1, 参数2, -, ...

  2. ES6函数相关包含箭头函数

    转载地址:https://es6.ruanyifeng.com/?search=%E7%AE%AD%E5%A4%B4%E5%87%BD%E6%95%B0&x=0&y=0#docs/fu ...

  3. es6 中的箭头符号

    es6中的箭头符号"=>"用于函数的简写,具体例子如下: 情况一: var test0 = function(){return 1; } // 可以写成 var test0 ...

  4. 理解javascript中的回调函数(callback)【转】

    在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Object类的对象一样用于内置对象的管理.因为function实 ...

  5. php copy array,ES6中Array.copyWithin()函数用法的详解

    ES6为Array增加了copyWithin函数,用于操作当前数组自身,用来把某些个位置的元素复制并覆盖到其他位置上去.下面重点给大家介绍ES6中Array.copyWithin()函数的用法,需要的 ...

  6. 在React的render方法中使用箭头函数

    在 React 组件中绑定点击事件通常的做法使用 class 属性. class Foo extends Component {handleClick = () => {console.log( ...

  7. 正确理解scipy中的coo_matrix函数

    正确理解scipy中的coo_matrix函数 1. 构造一个空矩阵 2. 使用ijv(triplet)格式构造一个矩阵 3. 用重复的索引构造矩阵 1. 构造一个空矩阵 这种用法比较简单,直接生成一 ...

  8. 理解javascript中的回调函数(callback)

    理解javascript中的回调函数(callback) 在JavaScrip中,function是内置的类对象,也就是说它是一种类型的对象,可以和其它String.Array.Number.Obje ...

  9. Vue相关面试问答TOP2(能不能在method中使⽤箭头函数、如何定义组件的data、v-if 和 v-show的区别、computed、watch、methods的区别、axios的特点....)

    1.能不能在method中使⽤箭头函数?               理论上可以使⽤,但是我不会使⽤,因为箭头函数中的this的指向与⼀般函数不同 ⼀般函数执⾏调⽤ 它的对象              ...

最新文章

  1. 在浏览器上也能训练神经网络?TensorFlow.js带你玩游戏~
  2. Win7无法安装程序提示Installer integrity check has failed的解决方法
  3. system-copy 和 ShellExecute 用法
  4. 路飞学城Python-Day46
  5. css什么是自适应布局,CSS自适应布局
  6. Android textview 获取url,获取电话号码
  7. dev控件调用html页面,Chrome开发工具 扩展 DevTools
  8. 巴菲特投资50年的5个心得
  9. node link 踩坑记录
  10. Simple-RNN with Keras
  11. 元胞自动机python代码_Python实现元胞自动机(康威生命游戏)
  12. php文章详情页排版,WordPress自定义文章详情页模板
  13. 布线问题—分支限界—java实现
  14. 极光推送 简书android,极光推送 (具体步骤,指导操作,推送成功)
  15. 谷歌浏览器如何设置兼容
  16. JAVA利用第三方平台发送短信验证码
  17. 小程序源码:网课查题微信小程序源码下载,题库资源丰富自动采集,支持语音拍照识别
  18. 计算机运行很卡很慢,电脑运行慢很卡怎么办 电脑运行卡的解决方法
  19. html旋转线条,html5 – 为什么我在移动浏览器上看到旋转的条纹?
  20. yarn unlink 简单使用

热门文章

  1. 《卡耐基写给男人的12堂财商课》摘录
  2. LeetCode 51. N 皇后、52. N 皇后 II
  3. TCP/UDP,HTTP,HTTP2.0,HTTPS,史上最详解,看一篇全懂了
  4. Swing 设置组合快捷键
  5. opencv hsv 颜色空间 彩虹色
  6. 云尚办公OA系统学习笔记(5.权限管理)
  7. 数据结构(C语言版 严蔚敏 编著)课后习题答案
  8. Linux基础(二十六)——高级网络配置
  9. runtime error: member access within null pointer of type ‘struct ListNode‘错误
  10. 各位掌门都是怎么血抛自家股票的