美文网首页
变量的解构

变量的解构

作者: 稀缺物种__ | 来源:发表于2017-03-09 17:25 被阅读0次

    通俗点讲,就是可以批量的定义变量如:

    let [a, b, c] = [1, 2, 3]  //a=1, b=2, c=3
    let [a1, b1] = [1, 2, 3]  //a1=1, b1=2
    let { bar, foo } = { foo: "aaa", bar: "bbb" };   
    foo // "aaa"
    bar // "bbb"
    

    常用用途

    1. 交换变量值
    let x = 1;
    let y = 2;
    [x, y] = [y, x];
    

    2.从对象返回值

    // 返回一个数组
    function example() {
      return [1, 2, 3];
    }
    let [a, b, c] = example();
    
    // 返回一个对象
    function example2() {
      return {
        foo: 1,
        bar: 2
      };
    }
    let { foo, bar } = example2();
    
    //取json返回值
    let jsonData = {
      id: 42,
      status: "OK",
      data: [867, 5309]
    };
    let { id, status, data: number } = jsonData;
    console.log(id, status, number);
    // 42, "OK", [867, 5309]
    
    //输入模块的返回对象
    const { SourceMapConsumer, SourceNode } = require("source-map");
    

    3.函数参数的默认值

    let a = ({x=1,y}={})=>{console.log(x,y)}
    a()                   //1,undefined
    a({x:2})            //2,undefined
    a({y:2})            //1,2
    

    这个默认参数一定是对象形式的,所以必须在加上={}。相当于给这个对象参数给个空对象的默认值,因为在调用的时候,如果没传参数,对象的值是undefinded,那么再调用对象下面的属性就会报错,可以理解为:

    let x = {}
    x.y = 1
    console.log(x.y)   //1
    let m = undefined
    m.n = 1   //Uncaught TypeError
    

    函数参数默认值这种写法,在定义参数的时候就稍有点麻烦,而且只能是对象形式的,调用的时候也要传入对象参数。在比较复杂的函数可以考虑,简单点的还不如在函数里定义下方便let x = x || defaultVal

    相关文章

      网友评论

          本文标题:变量的解构

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