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

    箭头函数: 用箭头定义函数........
              var fun = x=>x*x
    alert(fun(2))            //单参数
     
    var fun1 = ()=>2
    alert(fun1())        //无参数
     
    var fun2 = (x,y)=>x+y
    alert(fun2(1,2))        //双参数
     
    var fun3 = ()=>({a:12})
    alert(fun3().a)          //返回值是对象(要加括号)
     
     
    箭头函数有两种格式,一种像上面的,只包含一个表达式,连{ ... }return都省略掉了。还有一种可以包含多条语句,这时候就不能省略{ ... }return
     
     
    箭头函数和匿名函数一个明显的区别是this指针。箭头函数中的this指针由上下文决定。
    匿名函数实现的错误代码
    var obj={
        a:12,
        b:13,
        funn:function()
        {
            var fn = function(){return this.a+this.b};
            return fn();
        }
    }
    alert(obj.funn());
    这样写函数内部的函数this指针指向window或者undefine,当时的解决办法是that = this。现在有箭头函数就不用考虑这些
    箭头函数实现的代码
    var obj={
        a:12,
        b:13,
        funn:function()
        {
            var fn = ()=>this.a+this.b;
            return fn();
        }
    }
    alert(obj.funn());//25
     
    ps:之前对函数内this指针绑定对象的实现用到了函数的apply和call功能。现在 用call()或者apply()调用箭头函数时,无法对this进行绑定,即传入的第一个参数被忽略。
     
     
     
     
    generator : 生成器。
    generator由function*定义(注意多出的*号),并且,除了return语句,还可以用yield返回多次。
    由generator实现的斐波那契序列
    function* fun(max)
    {
        var a = 0;
        var b = 1;
        n = 1;
        while(n<=max){
            yield a;
            t = a + b;
            a = b;
            b = t;
            n++;
        }
        return a;
    }
    for(var i of fun(5))
    {
        alert(i)  //0 1 1 2 3
    }
     
     
    调用generator对象有两个方法,一是不断地调用generator对象的next()方法
                                                     二是直接用for ... of循环迭代generator对象
     
     
    generator 作用1: 因为generator可以在执行过程中多次返回,所以它看上去就像一个可以记住执行状态的函数,替代了用对象来保存状态
    generator作用2: ,就是把异步回调代码变成“同步”代码
     
     作用3:。。。          
    。。。。。
  • 相关阅读:
    《数据可视化之美》阅读(二)
    《数据可视化之美》阅读
    D3学习之动画和变换
    Java学习之垃圾回收
    程序员思维修炼 --- 读书笔记(二)
    程序员思维修炼 --- 读书笔记(一)
    Java 学习笔记 ------第六章 继承与多态
    Java 学习笔记 ------第五章 对象封装
    Java 学习笔记 ------第四章 认识对象
    (转)synchronized底层实现原理&CAS操作&偏向锁、轻量级锁,重量级锁、自旋锁、自适应自旋锁、锁消除、锁粗化
  • 原文地址:https://www.cnblogs.com/magicroc/p/5938768.html
Copyright © 2011-2022 走看看