ES6进修之函数的扩大

《ES6进修之函数的扩大》

  1. ES6许可为函数的参数设置默认值,即直接写在参数定义的背面。
    1.1. 指定了默认值今后,函数的length属性,将返回没有指定默认值的参数个数。也就是说,指定了默认值后,length属性将失真。
    1.2. 一旦设置了参数的默认值,函数举行声明初始化时,参数会构成一个零丁的作用域(context)。比及初始化完毕,这个作用域就会消逝。
  2. ES6 引入rest参数(“…变量名”),用于猎取函数的过剩参数,如许就不须要运用arguments对象了。rest参数搭配的变量是一个数组,该变量将过剩的参数放入数组中。

    function add(...values) {
      let sum = 0;
      for (var val of values) {
            sum += val;
      }
      return sum;
    }
    add(2, 5, 3) // 10
  3. 新增了扩大运算符三个点(…),用于将一个数组转为用逗号分开的参数序列。

    console.log(...[1, 2, 3])// 1 2 3
  4. ES6划定只需函数参数运用了默认值、解构赋值、或许扩大运算符,那末函数内部就不能显式设定为严厉形式,不然会报错。
  5. 新增函数的name属性,返回该函数的函数名。

    function foo() {}
    console.log(foo.name);// "foo"
  6. ES6许可运用“箭头”(=>)定义函数。这里重点解说。
    6.1. 箭头函数是什么?

     箭头函数使函数定义简约化
     ```javascript
         var f = () => 'It's a test.';
     ```
     与
     ```javascript
         var f = function (){
             return 'It's a test.'
         }
     ```
     是一样的意义。

    6.2. 箭头函数有什么作用?

      在ES5的时刻,函数this的值和挪用这个函数的上下文有关。
      当我们在js里写了闭包,匿名函数等,this指向会发作转变,致使
      没法找到对应作用域的相干变量或函数。以setTimeout为例:
      ```javascript
          var test='测试';
          function f() {
               setTimeout(function(){
                     console.log(this.test);
               }, 100);
         }
         f.call({test:'哈哈'});//测试
      ```
     以上输出的结果是测试,setTimeout是在全局作用域下实行的,this指向的是全局
      window,而window上test的值为"测试",所以输出的是测试。
      ```javascript
          var test='测试';
          function f() {
               setTimeout(() => {
                     console.log(this.test);
               }, 100);
         }
         f.call({test:'哈哈'});//哈哈
      ```
     以上输出的结果是哈哈,setTimeout是在全局作用域下实行的,this指向的是全局
     window,而箭头函数致使this老是指向函数定义见效时地点的对象,这里是指
     {test:'哈哈'},所以输出的是哈哈。
              
      因而可知箭头函数能够让this指向牢固化,this在定义的时刻就确定好的,今后
      不管怎么挪用这个箭头函数,箭头函数的this一直为定义时的this,这类特征很
      有利于封装回调函数。

    6.3 箭头函数运用注重点?

      6.3.1 不能够运用arguments对象,该对象在函数体内不存在。
      6.3.2 不绑定this。
      6.3.3 不能够看成组织函数,也就是说,不能够运用new敕令。
      6.3.4 不能够运用yield敕令,因而箭头函数不能用作Generator函数。

    学习于http://jsrun.net/tutorial/tZKKp

    原文作者:花花呀
    原文地址: https://segmentfault.com/a/1190000015749901
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞