美文网首页
函数的扩展(笔记)

函数的扩展(笔记)

作者: 灰灰_82a6 | 来源:发表于2019-07-02 13:11 被阅读0次

    默认值

    1.函数的参数可以设置默认值

    function log(x, y = 'World') {
      console.log(x, y);
    }
    

    2.length
    返回没有指定默认值的参数长度。

    (function (a, b, c = 5) {}).length // 2
    

    作用域

    参数如果有默认值,函数在声明和初始化的时候,参数会形成一个局部作用域,等初始化结束,这个作用域就会消失。

    //参数y = x形成一个单独的作用域。
    //这个作用域里面,变量x本身没有定义,所以指向外层的全局变量x。
    //函数调用时,函数体内部的局部变量x影响不到默认值变量x。
    let x = 1;
    
    function f(y = x) {
      let x = 2;
      console.log(y);
    }
    f() // 1
    

    rest参数

    1.语法为...变量名 ,实际上就是扩展运算符。
    2.rest参数之后就不能再有其他参数了。

    function add(a,...values) {
        // a为2
        // values获取剩余的参数 [5,3]
    }
    add(2, 5, 3) 
    

    3.函数的length属性,不包括 rest 参数。上面的函数,输出add.length结果为1。

    4.arguments对象不是数组,而是一个类似数组的对象。而rest参数就是一个真正的数组。

    严格模式

    es6中不能在函数内部显式设定为严格模式。

    // 报错
    function doSomething(a, b = a) {
      'use strict';
      // code
    }
    

    name属性

    1.获取函数的名字。
    2.如果是一个命名函数赋值给一个变量,那么在es5中会返回空字符串,而 ES6 中会返回实际的函数名。

    var f = function () {};
    // ES5
    f.name // ""
    // ES6
    f.name // "f"
    

    3.如果是把一个有名字的函数赋值给变量,那么es5中和es6中返回的结果都是函数原本的名字。

    const bar = function baz() {};
    // ES5
    bar.name // "baz"
    // ES6
    bar.name // "baz"
    

    箭头函数

    1.使用=>定义箭头函数

    var f = v => v;
    //等同于
    var f = function (v) {
      return v;
    };
    

    2.如果只有没有参数或者有多个参数,就加一个()

    //没有参数
    var f = () => 5;
    //多个参数
    var sum = (num1, num2) => num1 + num2;
    

    3.代码块如果多于一条语句,就使用{}包裹

    var sum = (num1, num2) =>{ num1 + num2;num1 - num2};
    

    注意:由于大括号被解释为代码块,如果函数返回一个对象,记得包裹一个()

    let getTempItem = id => ({ id: id, name: "Temp" });
    

    4.如果箭头函数只有一行语句,且不需要返回值,可以采用下面的写法,就不用写大括号了。

    //void 让函数不再return
    let fn = () => void doesNotReturn();
    

    箭头函数使用注意点

    1.箭头函数没有自己的作用域,所以它里面的this指向的就是箭头函数定义时所在对象。
    2.不可以当作构造函数,也就是说,不可以使用new命令。
    3.不可以使用arguments对象,该对象在函数体内不存在。
    4.不可以使用yield命令,因此箭头函数不能用作 Generator 函数。

    相关文章

      网友评论

          本文标题:函数的扩展(笔记)

          本文链接:https://www.haomeiwen.com/subject/nvucoqtx.html