博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
箭头函数与普通函数的区别
阅读量:4452 次
发布时间:2019-06-07

本文共 1644 字,大约阅读时间需要 5 分钟。

箭头函数:  

let fun = ()  =>{    console.log(this) //Window } fun()

普通函数:

function fun(){
console.log(this)//Window }

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

let fun = () =>{
console.log('111) } let fc = new fun';

会报如下错误:

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); // undefined    console.log(this); // Window {postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, …}  },  c: function() {    console.log(this.a); // 10    console.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));  // 11console.log(obj2.c(1)); // 11

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

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

6.箭头函数不能当作Generator函数,不能使用yield关键字。

转载于:https://www.cnblogs.com/lucky-fellow1/p/10764618.html

你可能感兴趣的文章
Python3笔记--字符串
查看>>
3.实现购物车程序
查看>>
PHP爬虫技术(一)
查看>>
ArcMap 通过DEM获取高程值
查看>>
bottle 0.5中的key-value数据库
查看>>
CTF--web BugKu-ctf-web(1-10)
查看>>
最大公约数和最小公倍数问题
查看>>
46黑名单显示的bug---(优化ListView)convertView复用带来的问题
查看>>
递归算法的时间复杂度分析
查看>>
jps命令使用
查看>>
(译)如何使用cocos2d制作一个塔防游戏:引子
查看>>
JSP所支持的九大隐式对象
查看>>
在Action中以属性的方式自动获取 表单数据,但要像实体类一样,需要封装get/set方法..(以属性驱动的方式获取页面提交的数据)...
查看>>
Spring是什么
查看>>
计算函数执行时间的装饰器
查看>>
色既是空 ,空既是色
查看>>
HDU - 4006 The kth great number multiset应用(找第k大值)
查看>>
SPOJ 1435 Vertex Cover 树形DP
查看>>
自定义泛型类
查看>>
[NOIP2016]天天爱跑步
查看>>