箭头函数和普通函数的区别
箭头函数:
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指向调用它的那个对象
箭头函数和普通函数的区别相关推荐
- js箭头函数和普通函数区别
js箭头函数和普通函数区别 实验环境:nodejs v12.16.1 箭头函数不能作为构造函数,而普通函数可以 箭头函数没有原型,而普通函数有 箭头函数return可以省略语句块.(如果=>右边 ...
- 箭头函数和普通函数有什么区别?
箭头函数和普通函数有什么区别? 1:写法不一样 2:普通函数存在变量提升的现象 3:箭头函数不能作为构造函数使用 4:两者this的指向不同 5:箭头函数的arguments指向它的父级函数所在作用域 ...
- es6箭头函数_【知识点】ES6箭头函数、箭头函数与普通函数的区别
作者:長安曹公子 文章出处:ES6 - 箭头函数.箭头函数与普通函数的区别 一.基本语法 ES6中允许使用箭头=>来定义箭头函数,具体语法,我们来看一个简单的例子: // 箭头函数 let fu ...
- 2022年了,你还没搞清楚箭头函数与普通函数的区别嘛?
目录 1.箭头函数简介 2.箭头函数与普通函数的区别 A.声明方式不同,匿名函数 B.this指向不同 C.箭头函数的this永远不会变,call.apply.bind也无法改变 D.箭头函数没有原型 ...
- JS中箭头函数和普通函数的五种区别
区别一:this关键字的指向 在普通函数中this指向调用这个函数的对象. 在构造函数中,this指向对象的实例. 在箭头函数中,没有this关键字,但是可以捕获上下文中的this用在箭头函数内部,并 ...
- 箭头函数与普通函数的区别
箭头函数与普通函数的区别 1.外形不同:箭头函数使用箭头定义,普通函数中没有. 2. 箭头函数全都是匿名函数:普通函数可以有匿名函数,也可以有具名函数 3.箭头函数不能用于构造函数:普通函数可以用于构 ...
- js中箭头函数和普通函数区别
一.箭头函数和普通函数 箭头函数相当于匿名函数,并且简化了函数定义. 箭头函数有两种格式,一种只包含一个表达式,连{ - }和return都省略掉了. 还有一种可以包含多条语句,这时候就不能省略{ - ...
- 详解箭头函数和普通函数的区别以及箭头函数的注意事项、不适用场景
箭头函数是ES6的API,相信很多人都知道,因为其语法上相对于普通函数更简洁,深受大家的喜爱.就是这种我们日常开发中一直在使用的API,大部分同学却对它的了解程度还是不够深... 普通函数和箭头函数的 ...
- Cathy Zhang 箭头函数与普通函数的区别
1.外形不同:箭头函数使用箭头定义,普通函数中没有 // 普通函数 function func(){console.log('普通函数可以作为具名函数,也可以是匿名函数'); }// 箭头函数 let ...
- JavaScript 箭头函数与function函数区别
结合以下注释理解代码,有空再分步骤讲解 // 执行正常 function 方法名() 会直接将函数提升到顶部所以此步成功 normalFun(2); // 执行失败 因var会将arrowFun变量提 ...
最新文章
- Real World Kanban作者访谈
- windows从cmd中键入命令的一些常用小工具
- iOS Sprite Kit教程之滚动场景
- VTK:可视化算法之Cutter
- Java内存缓存-通过Map定制简单缓存
- 过了这么多年,才发现写的最多的代码竟然是...
- (48)System Verilog 类中变量随机激励数组数据
- clickhouse官方文档_clickhouse分析:zookeeper减压概述
- Node.js 线程你理解的可能是错的 1
- python3序列化_python3 json序列化问题
- vue和jquery的交互问题,何时用jquery何时用vue
- 简单的php表单制作
- Redis-Lua脚本(集成SpringBoot工程)
- 纯干货,dp和px,那些不得不吐槽的故事—Android平台图片文字元素单位浅析
- Java 旋转、翻转图片工具类(附代码) | Java工具类
- Anaconda下载以及创建自己的环境
- 处理谷歌跨域不好使问题
- Android 新增外设Service添加供app使用
- QT 录制鼠标键盘回放
- powershell生成二维码