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
  • 相关阅读:
    python 的基础 学习 第六天 基础数据类型的操作方法 字典
    python 的基础 学习 第五天 基础数据类型的操作方法
    python 的基础 学习 第四天 基础数据类型
    ASP.NET MVC 入门8、ModelState与数据验证
    ASP.NET MVC 入门7、Hellper与数据的提交与绑定
    ASP.NET MVC 入门6、TempData
    ASP.NET MVC 入门5、View与ViewData
    ASP.NET MVC 入门4、Controller与Action
    ASP.NET MVC 入门3、Routing
    ASP.NET MVC 入门2、项目的目录结构与核心的DLL
  • 原文地址:https://www.cnblogs.com/hacker-caomei/p/14295056.html
Copyright © 2011-2022 走看看