zoukankan      html  css  js  c++  java
  • [ES6] 23. Rest Parameters & Spread Parameters

    Rest Parameters:

    In ES5, when you don't know how many paramters will be passed in, you can use arguments:

    let sum = function(){
        let result = 0;
        for(let i = 0; i < arguments.length; i++){
            result += arguments[i];
        }
        return result;
    }
    
    let result = sum(1,2,3);

    In ES6, you can use Rest params:

    let sum = function(...numbers){
        
        let result = 0;
        for(let i = 0; i < numbers.length; i++){
            result += numbers[i];
        }
        return result;
    };
    describe("rest paramters", function(){
    
        it("is like varargs", function(){
        
            let doWork = function(name, ...numbers){
            
                let result = 0;
                numbers.forEach(function(n){
                    result += n;
                });
                
                return result;
            };
            
            let result = doWork("Scott", 1,,2,3);
            expect(result).toBe(6);
        });
    });

    ...Spread:

    It looks the same as Rest Parameters, Spread uses to spread an array.

    it("should sum up", function(){
        let doWork = function(x,y,z){
            return x+y+z;
        };
        
        expect(doWork(...[1,2,3])).toBe(6);
    });
    <!DOCTYPE html>
    <html>
      <head>
        <script data-require="traceur@*" data-semver="0.0.0-20140302" src="https://traceur-compiler.googlecode.com/git/bin/traceur.js"></script>
        <script>
         traceur.options.experimental = true;
        </script>
        <script data-require="traceur@*" data-semver="0.0.0-20140302" src="https://traceur-compiler.googlecode.com/git/src/bootstrap.js"></script>
        <link rel="stylesheet" href="style.css" />
        <script src="script.js"></script>
      </head>
    
      <body>
          <script type="module">
                let a = [4,5,6];
                let b = [1,2,3, ...a, 7,8,9];
                document.write(b); //1,2,3,4,5,6,7,8,9
          </script>
      </body>
    </html>
  • 相关阅读:
    列表和元组
    UVM宏
    UVM中重要函数
    组合模式(composite)
    装饰器模式(Decorator)
    适配器模式(Adapter)
    桥接模式
    原型模式(prototype)
    单例模式(singleton)
    UML类图
  • 原文地址:https://www.cnblogs.com/Answer1215/p/4470997.html
Copyright © 2011-2022 走看看