ES6新语法之解构实践指南

 更新时间:2022年06月16日 10:53:57   作者:言不及行yyds  
所谓解构就是解构聚合数据,下面这篇文章主要给大家介绍了关于ES6新语法之解构的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

1.解构初了解

解构是ES6的一个新的语法特性,可以把他看作是一个

具有结构赋值功能的一个语法。

关于解构通常有俩种,有数组解构和对象解构

解构有什么优点吗?为什么我们用他。

ok,让我们用一个例子来显示一下解构的优点

定义一个函数,返回一个数组(含3个数),用a,b,c来接受。

1.用平常的语法

function foo(){
            return [1,2,3]
        }
var temp=foo(),
a=temp[0],b=temp[1],c=temp[2]
console.log(a,b,c)

构造一个函数手动赋值,用一个临时变量temp,将值传递给a,b,c

2.用解构的方法

  function foo(){
      return [1,2,3]
      }
   var [a,b,c]=foo()
  console.log(a,b,c)

在输出的结果都是一样,都输出(1,2,3)

所以你怎么选。

2.解构详细解析

2.1对象属性赋值形式

相比于之前的赋值形式我们都熟悉与=a的赋值形式

但是解构语法翻转了这种形式,,左侧变量作为一个“模式”

用于将右侧的数组赋值给左侧的变量

接着讨论一下在上面{a,b,c}其实是{a:a,b:b,c:c}的简写。

那么在赋值的时候省略的部分是a:   还是 :a

在这我们就需要去了解对象属性赋值形式

function foo(){
      return {a:4,b:5,c:6}
    }
var { a:aitem,b:bitem,c:citem }=foo()
     
 console.log(aitem,bitem,citem)
 
 var x=10,y=20
 var o={d:x,e:y}
 console.log(o.d,o.e)

 现在我们大概能明白了吧,

用一张图来解释

a27775d61b604a1a92f718a3bc62eafe.png

2.2变量的声明

在前面我们看到了使用var声明变量,其实也可以使用let,const声明

也可以通过IEIF的形式赋值比如({x,y,z}=bar())

 好的,那么关于变量的话,他只能被设置为变量标识符吗?

这种想法是愚蠢的,任何合法的赋值表达式都可以

用两个例子来解析

2.3怎么解构

记住一个原则,对称解构。

1.解构的过多

 怎么理解,就是左右的赋值不对称,并不是所有的值都用来解构,

多余的值会被设置为undefinder

2解构的过少

右侧的"变量"多余左侧的变量

3.解构正好

左右变量相等

 数组的解构是按顺序排列的,变量的取值有他的位置决定

对象的解构,对象的属性没有次序,变量必须与属性同名,才能取到正确的值,对象的解构赋值的内部机制,是先找到同名属性,然后再赋给对应的变量。真正被赋值的是后者,而不是前者

3.实践

3.1数组的解构

var a1=[1,[2,3,[4]],5]
var [a,[b,c,[d]],e]=a1
console.log(a,b,c,d,e)

输出1,2,3,4,5

在这里采用重复解构的形式,解构的形式就是从内向外依次解构

3.2对象的解构

var  o1={a:{b:{c:6}}}
var {a:{b:{c:w}}}=o1
console.log(w)

输出6

3.3解构参数

 function foo({x,y}){
        console.log(x.y)
    }
console.log(3,4)

输出3,4,如果是console.log(3)的话会报错,但是x的值是已经解构的

3.4复杂解构

let wangfei = {
name: "王菲",
   age: 18,
  songs: ["红豆", "流年", "暧昧", "传奇"],
  history: [{ name: "窦唯" }, { name: "李亚鹏" }, { name: "谢霆锋" }],
};
 
let {
   songs: [one, two, three],
  history: [first, second, third],
} = wangfei;
console.log(one, two, three,first, second, third)

44485beae5484ba78a5e2b0028e70e36.png

 4.总结

1.了解了解构的含义,及优点

2.学会了解构对象属性赋值的形式

3.了解了一些解构的技巧

4.用几个例子来动手实践。

到此这篇关于ES6新语法之解构的文章就介绍到这了,更多相关ES6新语法解构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Javascript异步编程模型Promise模式详细介绍

    Javascript异步编程模型Promise模式详细介绍

    异步模式在 Web 编程中变得越来越重要,如何处理异步请求后的操作是一件麻烦事。Promise 是一种异步编程模型,术语称作 Deferred 模式,它通过一组API来规范化异步操作,让异步操作的流程控制更加容易。
    2014-05-05
  • javascript记录文本框内文字个数检测文字个数变化

    javascript记录文本框内文字个数检测文字个数变化

    要对文本框中用户输入的文字进行记数,在下面显示出来,经研究找到个不错的方法,可以完美解决在删除文字后,字数变化问题
    2014-10-10
  • 微信小程序实现image组件图片自适应宽度比例显示的方法

    微信小程序实现image组件图片自适应宽度比例显示的方法

    这篇文章主要介绍了微信小程序实现image组件图片自适应宽度比例显示的方法,简单讲述了image组件的常用属性,并结合实例形式分析了微信小程序实现图片自适应宽度比例的相关操作技巧,需要的朋友可以参考下
    2018-01-01
  • javascript中使用正则表达式清理table样式的代码

    javascript中使用正则表达式清理table样式的代码

    本文给大家讲解的是使用javascript实现去除多余的TABLE的样式,主要通过结合正则表达式来实现,非常的简单实用,有需要的小伙伴可以参考下。
    2015-07-07
  • JavaScript键盘事件响应顺序详解

    JavaScript键盘事件响应顺序详解

    这篇文章主要为大家详细介绍了JavaScript键盘事件响应顺序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-09-09
  • Echarts图表位置调整的图文教程

    Echarts图表位置调整的图文教程

    实际过程中你会发现图表在div中的位置不太理想,这时怎么去调整呢?下面这篇文章主要给大家介绍了关于Echarts图表位置调整的相关资料,需要的朋友可以参考下
    2022-10-10
  • 异步安全加载javascript文件的方法

    异步安全加载javascript文件的方法

    这篇文章主要介绍了异步安全加载javascript文件的方法,实例分析了javascript实现文件异步加载的具体技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • JavaScript对象合并实现步骤介绍

    JavaScript对象合并实现步骤介绍

    这篇文章主要介绍了JavaScript对象合并实现步骤,为什么要合并?这是我在重构代码的时候的一个需求。简单来说,我会有若干个对象需要合并为一个对象。而这些对象为两层,如果直接展开或者赋值会涉及到深拷贝
    2023-01-01
  • 微信小程序基于本地缓存实现点赞功能的方法

    微信小程序基于本地缓存实现点赞功能的方法

    这篇文章主要介绍了微信小程序基于本地缓存实现点赞功能的方法,涉及微信小程序界面布局、事件响应及缓存操作等相关实现技巧,需要的朋友可以参考下
    2017-12-12
  • self.attachevent is not a function的解决方法

    self.attachevent is not a function的解决方法

    今天一个客户用chrome浏览器访问网站,他的网站js提示self.attachevent is not a function,这个问题就是这个浏览器不支持attachevent,可以通过如下方法解决了,分享一下,需要的朋友可以参考下
    2017-04-04

最新评论