美文网首页程序员
javascript之初识变量的解构赋值

javascript之初识变量的解构赋值

作者: 秘果_li | 来源:发表于2017-03-10 17:24 被阅读0次
    什么是变量的解构(Destructuring)赋值?

    ES6 允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构

    只要等号两边的模式相同,左边的变量就会被赋予对应的值

    • 数组解构赋值
     let [m,n]=[9,4];
     console.log(m,n); // m 9; n 4  
    
    • 对象解构赋值(对象的结构赋值,与顺序无关因为变量必须与属性同名,才能取到正确的值)
    let {p,q}={q:"hello",p:"hi"};
    console.log(p,q); //hi    hello
    

    注:
    1.如果解构不成功,变量的值就等于undefined

    let {p} = {q: 'a'};
    p // undefined
    

    2.解构也可以用于嵌套结构的对象

    let [a, [b], c] = [1, [2], 3]; //a=1 ; b=2; c=3;
    

    3.如果要将一个已经声明的变量用于解构赋值,要在 {} 外加上 () 否则JavaScript引擎会将 {p} 理解成一个代码块

    let p;
    ({p} = {p: 8});
    

    但是在有些情况下是不能使用圆括号的:

    1.变量声明语句中,不能带有圆括号
    2.函数参数中,模式不能带有圆括号
    3.赋值语句中,不能将整个模式,或嵌套模式中的一层,放在圆括号之中

    所以可以使用 () 的情况只有一种 —— 赋值语句的非模式部分,可以使用圆括号

    用途

    <1> 交换两个变量的值

    let a=1,b=2;
    [a,b]=[b,a];     //a=2  b=1
    

    <2>从函数返回多个值
    一般要返回多个值的话,我们只能用数组存值,然后输出,有了解构赋值就可以提取出多个值

    function fun() {
      return [1, 2, 3];
      }
      let [a, b, c] = fun();
      console.log(a,b,c);  // 输出1 2 3
    

    相关文章

      网友评论

        本文标题:javascript之初识变量的解构赋值

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