对ES6的解构赋值理解

解构赋值:在ES6中允许按照一定的模式从数组和对象中提取值,对变量进行赋值的过程

先从第一个结构数组说:

//创建数组变量

const NAMES = ["家驹", "国荣", "德华", "霆锋"];

//解构赋值

let [huang, zhang, liu, xie] = NAMES;

console.log(huang);  //得到的结果为家驹

console.log(zhang);  //得到的结果为国荣

console.log(liu);        //得到的结果为德华

console.log(xie);       //得到的结果为霆锋

现在就来详细说一下为什么会有这样的结果

我主要是通过地址来讲解,就是为了大家更清晰。

定义变量,变量名NAMES就是数组的地址,跟宿舍是一个道理,NAMES就是宿舍号,内容就是宿舍成员,可以根据宿舍号找到家驹这个人。

 let [huang, zhang, liu, xie] = NAMES;我对这行代码的理解不是很深,我就利用我自己的C语言知识来讲解。

我的理解就是定义了一个数组,但是这个数组没有变量名,任何将NAMES数组的地址赋值给该新创建的数组。

 

我将上面的数组NAMES和新创建的一起做对比,其实NAMES这个变量名就是指向的数组都是同一个,所以你可以根据NAMES[0]得到的是家驹也可以得到的是huang,其实两者就是一样的对象,也就是huang = "家驹";,其他的变量亦是如此,所以解构赋值的作用就跟定义变量并赋值时一样的

 

接下来讲解对象结构的解构赋值

 //创建对象

  const ZHOU = {

            name: "周润发",

            age: "不详",

            address: "香港",

            movie: function(){

                console.log("英雄本色");

            }

     };

//解构赋值

 let {name, age, address, movie} = ZHOU;

 console.log(name);        //得到的是周润发

 console.log(age == ZHOU.age);         //得到的是true

 console.log(address == ZHOU.address);        //得到的是true

  movie();        //调用对象中的函数

同样通过地址来讲解:

创建对象:

  let {name, age, address, movie} = ZHOU;我个人对这行代码的理解:同数组时一样的原理,变量名PLAYER都是指向同一个对象

 两者的对比

对象访问属性的方式为:PLAYER.name 得到的结果就是周润发。

那么对右边的结构来说,访问得到的是属性,也就是PALAYER.name得到的就是周润发

即所以两者表示的是同一个东西,也就是PLAYER.name = "周润发";

或许有很多朋友会有这样的疑惑,右边的变量名可不可以不和对象的属性名一样呢,答案是可以的,但是得到的是undefined。为什么

因为如果你定义的变量名和对象属性名不一样,比如我在右边还定义了一个gender变量,明显PLAYER.gender是对象没有定义的属性,这就好等于给原来对象添加新的属性一样。

好了,这就是我对解构赋值的理解了,希望可以帮到你 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值