zoukankan      html  css  js  c++  java
  • js箭头函数

    https://segmentfault.com/a/1190000020134330

    为什么要引用js箭头函数: (更简短的函数并且不绑定this。)

    1 简短的函数: 

     无参数 ()=>{return }

     有1个参数 (v)=>{return }

     有两个参数 (v1,v2)=>{return }

     当只有一个参数的时候: 省略()

     当只有一个return的时候: 省略return和或括号

    2 不绑定this:

    第一个匿名参数有自己的上下文(指向的并非obj对象),当被赋值给anon变量且调用时,this发生了改变,指向了window。调用的应该是windows进行调用!

    另一个,箭头函数与创建它的函数有相同的上下文,故指向obj对象。

     当通过call或者apply调用

    由于箭头函数没有自己的this指针,通过call()或者apply()方法调用一个函数时,只能传递参数(不能绑定this),它们的第一个参数会被忽略。

     不绑定arguments

    箭头函数不绑定Arguments对象。因此,在本示例中,arguments只是引用了封闭作用域内的arguments:

    二:怎么用?

    1 优化代码:
     遍历每一个数组:

      const d= words.map( word=>word.toLowerCase());

     返回对象的某个值:

      const c = object.map(object=> object.name)

      用forEach来替换传统for循环的时候,实际上箭头函数会直观的保持this来自于父一级:

    2 promise和promise链:

     异步代码 箭头函数:

     this.do().then( (result)= >{ this.storResult(result);})

    3 对象转化:

     Vue 的通用模式

    三什么时候不能用?

    1 函数体内的this对象就是定义时候的所在对象,而不是使用的时候在的对象。

    2 不能当做构造函数。不能喝new一起使用。所以没有prototype属性。

    3 不能yield关键字。

    4 不可以使用arguments对象,如果要用,可以使用rest参数。

    四,使用机会:

    使用三元运算符

    var foo = a => a > 15 ? 15 : a;
    
    foo(10); // 10
    foo(16); // 15

    闭包

    // 标准的闭包函数
    function Add() {
      var i = 0;
      return function() {
        return (++i);
      }
    }
    
    var add = Add();
    add(); // 1
    add(); // 2
    
    // 箭头函数体的闭包(i = 0是默认参数)
    var Add = (i = 0) => { return (() => (++i)) };
    var add = Add();
    add(); // 1
    add(); // 2
    
    // 因为仅有一个返回,return及括号也可以省略
    var Add = (i = 0) => () => (++i);

    箭头函数递归

     
    var fact = (x) => ( x == 0 ?  1 : x*fact(x-1) );
    fact(5);       // 120
  • 相关阅读:
    03 获取元素节点对象的方式
    02 window对象的常用方法
    01 BOM对象介绍
    10 for循环介绍和应用
    09 三元运算
    序列化pickle
    随机数random模块
    datetime模块时间运算
    time模块细讲
    时间处理模块
  • 原文地址:https://www.cnblogs.com/hacker-caomei/p/14295056.html
Copyright © 2011-2022 走看看