• 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:。。。          
    。。。。。
  • 相关阅读:
    关于jQuery的两对小括号()()的说明
    高效能 DBA 的七个习惯
    Div+CSS网站设计的优点
    .Net上传图片按比例自动缩小或放大
    SEO草根技术基础—DIV+CSS
    asp.net连接Mysql(connector/net 5.0)
    大型网站(高访问、海量数据)技术架构
    ISO Latin1字符集
    CuteEditor学习总结技巧
    Craigslist 的数据库架构
  • 原文地址:https://www.cnblogs.com/magicroc/p/5938768.html
Copyright © 2020-2023  润新知