zoukankan      html  css  js  c++  java
  • es6之函数扩展

    默认值

    let defaultA=(x,y=5,c)=>(x+y+c)
    console.log(defaultA(1,2,3));//6
    console.log(defaultA(1,2));//NaN
    let defaultA=(x,y,c=4)=>(x+y+c)
    console.log(defaultA(1,2));//7

    有默认值的作用域

           一旦设置了参数的默认值,函数进行声明初始化时,参数会形成一个单独的作用域(context)。等到初始化结束,这个作用域就会消失。这种语法行为,在不设置参数默认值,是不会出现的

    这段话主要state了3个事实:

    ①函数参数有默认值时,会在声明初始化阶段形成一个单独的作用域

    ②这个作用域在初始化结束后消失

    ③没默认值的情况下,没有①②的现象发生。

    function f1(x,y=x){console.log(x,y)};
    f1(1);//1 1
    f1(1,2);//1 2
    f1();//undefined undefined
    function f1(x,y=cc){console.log(x,y)};
    f1(1,2); //1 2
    f1(1);//报错 cc is not defined
    
    let cc=1;
    f1(1);//1 1
    f1();//undefined 1

    https://www.cnblogs.com/surfer/p/10195153.html

    rest参数

    (形式为...变量名),用于获取函数的多余参数,这样就不需要使用arguments对象了。

            function restDemo(...values) {
                var sum = 0;
                for (let v of values) {
                    sum += v;
                }
                return sum;
            }
            console.log(restDemo(1,2,3));

    rest 参数必须是最后一个参数,否则会报错

            function f(a, ...b, c) {
                // ...
            }
            console.log(f(1, 2, 3));//报错Uncaught SyntaxError: Rest parameter must be last formal parameter

    rest参数是数组

            function f(a, ...b) {
                // ...
                console.log(b);//Array(2)
            }
            f(1, 2, 3);

    函数的length属性,不包括 rest 参数

            function f(a, ...b) {
                // ...
            }
            console.log(f.length); //1

    ...应用

    console.log(...[1,2,4])//1 2 4
    console.log(4,...[1,2,3])//4 1 2 3

    箭头函数

    ()=》{}

    当函数体只有一行时,可以简化为 x=>x , 其相当于function(x){return x;}

    (x,y)=>x+y   其相当于function(x+y){return x+y;}

    let func=x=>{x=x+2;x=x+3;}
    func(1);//执行不会有任何结果,因为多行,没有返回值
    
    //正确操作
    func=x=>{x=x+2;x=x+3;  return x;}
    func(1);   //6  多行需要主动return

     伪调用

    {
      function tail(x){
        console.log('tail',x);
      }
      function fx(x){
        return tail(x)
      } 
      fx(123) //tail 123
    }
  • 相关阅读:
    20155302 《信息安全系统设计基础》课程总结
    2017-2018-1 20155302 第十四周作业
    2017-2018-1 20155302 第十三周作业
    2017-2018-1 20155302 实验五 通信协议设计
    20155302实验一
    2017-2018-1 20155302 实验四 外设驱动程序设计
    2017-2018-1 20155302 《信息安全系统设计基础》第11周学习总结
    # 2017-2018-1 20155302 课下实践IPC及课上补充
    2017-2018-1 20155302 实验三 实时系统
    # 2017-2018-1 20155302 《信息安全系统设计基础》第9周学习总结
  • 原文地址:https://www.cnblogs.com/sunmarvell/p/14370355.html
Copyright © 2011-2022 走看看