箭头函数和普通函数的区别
来源:互联网 发布:mac mobi 制作软件 编辑:程序博客网 时间:2024/05/29 04:07
面试时被问到箭头函数和普通函数的区别。。。
-_-||
借用别人的一个栗子:
function make () { return ()=>{ console.log(this); }}var testFunc = make.call({ name:'foo' });testFunc(); testFunc.call({ name:'bar' });
Object {name: "foo"}Object {name: "foo"}可以看到箭头函数在定义之后,this 就不会发生改变了,无论用什么样的方式调用它,this 都不会改变;
原因:箭头函数不会自动绑定局部变量,如this,arguments,super(ES6),new.target(ES6)等
所以箭头函数没有它自己的this值,箭头函数内的this值继承自外围作用域。在箭头函数中调用 this 时,仅仅是简单的沿着作用域链向上寻找,找到最近的一个 this 拿来使用
{ ... addAll: function addAll(pieces) { var self = this; _.each(pieces, function (piece) { self.add(piece); }); }, ... }
在这里,你希望在内层函数里写的是this.add(piece),不幸的是,内层函数并未从外层函数继承this的值。在内层函数里,this会是window或undefined,临时变量self用来将外部的this值导入内部函数。(另一种方式是在内部函数上执行.bind(this),两种方法都不甚美观。)这时候就可以使用箭头函数来达到要求
阅读全文
0 0
- 箭头函数和普通函数的区别
- 箭头函数和非箭头函数的区别
- 内联函数和普通函数的区别
- 宏函数和普通函数的区别
- 内联函数和普通函数的区别
- 前端-浅谈箭头函数的this和普通函数的this
- static 和普通函数的区别
- 类的成员函数和普通成员函数的区别
- 宏、内联函数和普通函数的区别
- 静态成员函数和普通成员函数的区别?
- c语言中static 函数和普通函数的区别?
- c语言中static 函数和普通函数的区别?
- C++中虚函数和普通函数的区别
- c语言中static 函数和普通函数的区别
- 比较函数式宏定义和普通函数的区别
- c语言中static 函数和普通函数的区别?
- 静态成员函数和普通成员函数的区别
- c语言中static 函数和普通函数的区别?
- retrofit+RxJava+okhttp简便封装实现网络请求(详解)
- js的事件
- 09. JSP EL表达式语言
- android elf解析Elf_Dyn标识符号
- Android学习--位置信息经纬度获取+动态获取权限
- 箭头函数和普通函数的区别
- Mysql三范式
- python——执行带有%的sql执行报错解决方法
- 2017 Multi-University Training Contest
- jQuery中的.addClass()用法
- -Dmaven.multiModuleProjectDirectory system property is not set. Check $M2_HOME environment variable
- Springboot--定时器
- 装饰者模式及其应用
- 编程题(度度熊回家最短距离)