箭头函数:

let fun = () => {console.log('lalalala');
}

普通函数:

function fun() {console.log('lalla');
}

箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式,一种只包含一个表达式,连{ ... }和return都省略掉了。还有一种可以包含多条语句,这时候就不能省略{ ... }和return。

1. 箭头函数是匿名函数,不能作为构造函数,不能使用new

let FunConstructor = () => {console.log('lll');
}let fc = new FunConstructor();

2. 箭头函数不绑定arguments,取而代之用rest参数...解决

function A(a){console.log(arguments);
}
A(1,2,3,4,5,8);  //  [1, 2, 3, 4, 5, 8, callee: ƒ, Symbol(Symbol.iterator): ƒ]let B = (b)=>{console.log(arguments);
}
B(2,92,32,32);   // Uncaught ReferenceError: arguments is not definedlet C = (...c) => {console.log(c);
}
C(3,82,32,11323);  // [3, 82, 32, 11323]

3. 箭头函数不绑定this,会捕获其所在的上下文的this值,作为自己的this值

var obj = {a: 10,b: () => {console.log(this.a); // undefinedconsole.log(this); // Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}},c: function() {console.log(this.a); // 10console.log(this); // {a: 10, b: ƒ, c: ƒ}}
}
obj.b();
obj.c();
var obj = {a: 10,b: function(){console.log(this.a); //10},c: function() {return ()=>{console.log(this.a); //10}}
}
obj.b();
obj.c()();

4. 箭头函数通过 call()  或   apply() 方法调用一个函数时,只传入了一个参数,对 this 并没有影响。

let obj2 = {a: 10,b: function(n) {let f = (n) => n + this.a;return f(n);},c: function(n) {let f = (n) => n + this.a;let m = {a: 20};return f.call(m,n);}
};
console.log(obj2.b(1));  // 11
console.log(obj2.c(1)); // 11

5. 箭头函数没有原型属性

var a = ()=>{return 1;
}function b(){return 2;
}console.log(a.prototype);  // undefined
console.log(b.prototype);   // {constructor: ƒ}

箭头函数不能当做Generator函数,不能使用yield关键字

总结

  • 箭头函数的 this 永远指向其上下文的  this ,任何方法都改变不了其指向,如 call() ,  bind() ,  apply()
  • 普通函数的this指向调用它的那个对象

箭头函数和普通函数的区别相关推荐

  1. js箭头函数和普通函数区别

    js箭头函数和普通函数区别 实验环境:nodejs v12.16.1 箭头函数不能作为构造函数,而普通函数可以 箭头函数没有原型,而普通函数有 箭头函数return可以省略语句块.(如果=>右边 ...

  2. 箭头函数和普通函数有什么区别?

    箭头函数和普通函数有什么区别? 1:写法不一样 2:普通函数存在变量提升的现象 3:箭头函数不能作为构造函数使用 4:两者this的指向不同 5:箭头函数的arguments指向它的父级函数所在作用域 ...

  3. es6箭头函数_【知识点】ES6箭头函数、箭头函数与普通函数的区别

    作者:長安曹公子 文章出处:ES6 - 箭头函数.箭头函数与普通函数的区别 一.基本语法 ES6中允许使用箭头=>来定义箭头函数,具体语法,我们来看一个简单的例子: // 箭头函数 let fu ...

  4. 2022年了,你还没搞清楚箭头函数与普通函数的区别嘛?

    目录 1.箭头函数简介 2.箭头函数与普通函数的区别 A.声明方式不同,匿名函数 B.this指向不同 C.箭头函数的this永远不会变,call.apply.bind也无法改变 D.箭头函数没有原型 ...

  5. JS中箭头函数和普通函数的五种区别

    区别一:this关键字的指向 在普通函数中this指向调用这个函数的对象. 在构造函数中,this指向对象的实例. 在箭头函数中,没有this关键字,但是可以捕获上下文中的this用在箭头函数内部,并 ...

  6. 箭头函数与普通函数的区别

    箭头函数与普通函数的区别 1.外形不同:箭头函数使用箭头定义,普通函数中没有. 2. 箭头函数全都是匿名函数:普通函数可以有匿名函数,也可以有具名函数 3.箭头函数不能用于构造函数:普通函数可以用于构 ...

  7. js中箭头函数和普通函数区别

    一.箭头函数和普通函数 箭头函数相当于匿名函数,并且简化了函数定义. 箭头函数有两种格式,一种只包含一个表达式,连{ - }和return都省略掉了. 还有一种可以包含多条语句,这时候就不能省略{ - ...

  8. 详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景

    箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱.就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和箭头函数的 ...

  9. Cathy Zhang 箭头函数与普通函数的区别

    1.外形不同:箭头函数使用箭头定义,普通函数中没有 // 普通函数 function func(){console.log('普通函数可以作为具名函数,也可以是匿名函数'); }// 箭头函数 let ...

  10. JavaScript 箭头函数与function函数区别

    结合以下注释理解代码,有空再分步骤讲解 // 执行正常 function 方法名() 会直接将函数提升到顶部所以此步成功 normalFun(2); // 执行失败 因var会将arrowFun变量提 ...

最新文章

  1. Real World Kanban作者访谈
  2. windows从cmd中键入命令的一些常用小工具
  3. iOS Sprite Kit教程之滚动场景
  4. VTK:可视化算法之Cutter
  5. Java内存缓存-通过Map定制简单缓存
  6. 过了这么多年,才发现写的最多的代码竟然是...
  7. (48)System Verilog 类中变量随机激励数组数据
  8. clickhouse官方文档_clickhouse分析:zookeeper减压概述
  9. Node.js 线程你理解的可能是错的 1
  10. python3序列化_python3 json序列化问题
  11. vue和jquery的交互问题,何时用jquery何时用vue
  12. 简单的php表单制作
  13. Redis-Lua脚本(集成SpringBoot工程)
  14. 纯干货,dp和px,那些不得不吐槽的故事—Android平台图片文字元素单位浅析
  15. Java 旋转、翻转图片工具类(附代码) | Java工具类
  16. Anaconda下载以及创建自己的环境
  17. 处理谷歌跨域不好使问题
  18. Android 新增外设Service添加供app使用
  19. QT 录制鼠标键盘回放
  20. powershell生成二维码

热门文章

  1. C语言刮刮乐(掩码图的范例)
  2. 脱脂剂非硅消泡剂怎能成为厂家们口中的除泡方案之一!
  3. YOLOv5(v6.1)解析(四)超参数进化
  4. 计算机组成原理rll编码,计算机组成原理自考复习资料(8) _ 重庆自考网
  5. SRTM数据介绍与说明
  6. 用企业微信机器人做交互式前端-添加微信功能
  7. matlab对图像进行gamma变换_matlab灰度图像调整及imadjust函数的用法详解
  8. doirs数据库连接及数据导入
  9. 百鸡问题扩展-N鸡问题(枚举)
  10. 如何有效运用测评自养号来提升阿里国际店铺权重