• es6函数模块-------初步学习


    初步学习:

    1 函数参数允许尾逗号
    function clownsEverywhere(
      param1,
      param2,     //param2后面有逗号
    ) {  }
    
    
    
    
    2 函数参数可以赋初值
      利用解构赋值默认值结合使用
    函数的 length 属性 失真 ,是指没有赋初值的函数参数个数
    
    
    
    3 name 属性
      函数的name属性返回该函数名
    
    
    
    4 箭头函数,我理解=> 后面就是返回值,如果有多个参数,就用()括起来;
      如:var add=(val1,val2)=>val1+val2;
    (1)函数体内的this对象,就是定义时所在的对象,而不是使用时所在的对象。
    this对象的指向是可变的,但是在箭头函数中,它是固定的。
    
    function foo() {
      setTimeout(() => {
        console.log('id:', this.id);
      }, 100);
    }
    
    var id = 21;
    
    foo.call({ id: 42 });
    // id: 42
    上面代码中,setTimeout的参数是一个箭头函数,这个箭头函数的定义生效是在foo函数生成时,而它的真正执行要等到 100 毫秒后。
    如果是普通函数,执行时this应该指向全局对象window,这时应该输出21。但是,箭头函数导致this总是指向函数定义生效时所在的对象
    (本例是{id: 42}),所以输出的是42。
    
    
    
    
    
    
    5 rest参数,形如:...params
      例子:function doadd(...params){
            console.info(params.length);
            console.info(params[0]);
            console.info(params[1])
        }
        doadd(99,33.34,1,2,3,4,5,)
    
        7
        99
    
        33.34
    
    注意,rest 参数之后不能再有其他参数(即只能是最后一个参数),否则会报错
    函数的length属性,不包括 rest 参数。
    
    arguments对象不是数组,而是一个类似数组的对象。所以为了使用数组的方法,必须使用Array.prototype.slice.call先将其转为数组。
    rest 参数就不存在这个问题,它就是一个真正的数组,数组特有的方法都可以使用。
    
    下面是一个 rest 参数代替arguments变量的例子。
    
    // arguments变量的写法
    function sortNumbers() {
      return Array.prototype.slice.call(arguments).sort();
    }
    
    // rest参数的写法
    const sortNumbers = (...numbers) => numbers.sort();
    
    
    
    
    
    
    6 双冒号运算符
      函数绑定运算符是并排的两个冒号(::),双冒号左边是一个对象,右边是一个函数。该运算符会自动将左边的对象,作为上下文环境(即this对象),绑定到右边的函数上面。
    
    foo::bar;
    // 等同于
    bar.bind(foo);
    
    foo::bar(...arguments);
    // 等同于
    bar.apply(foo, arguments);
    
    const hasOwnProperty = Object.prototype.hasOwnProperty;
    function hasOwn(obj, key) {
      return obj::hasOwnProperty(key);
    }
    
    
    
    
    7 严格模式
      只要参数使用了默认值、解构赋值、或者扩展运算符,函数内就不能显式指定严格模式。因为:矛盾点 参数先执行,执行到函数体发现要严格,参数处才报错。
    两种解决办法:
    1 设定全局性的严格模式,这是合法的。
    2 把函数包在一个无参数的立即执行函数里面

    结束

  • 相关阅读:
    WPF 创建自定义窗体
    Entity Framework Code First for SQL Compact
    WPF QuickStart系列之样式和模板(Style and Template)
    WPF 实现 DataGrid/ListView 分页控件
    WPF ItemsControl ListBox ListView比较
    WPF 实现带标题的TextBox
    WPF ListView展示层叠信息
    上(下)三角矩阵
    正定矩阵(positive definite matrix)
    (非)奇异矩阵
  • 原文地址:https://www.cnblogs.com/wulinzi/p/8419505.html
Copyright © 2020-2023  润新知