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新语法解构内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JS实现深拷贝的几种简单方法示例

    JS实现深拷贝的几种简单方法示例

    深拷贝和浅拷贝是在JavaScript中复制对象或数组时经常遇到的概念,下面这篇文章主要给大家介绍了关于JS实现深拷贝的几种简单方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-10-10
  • javascript设计模式之module(模块)模式

    javascript设计模式之module(模块)模式

    这篇文章主要为大家详细介绍了javascript设计模式之module(模块)模式 ,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • 谈一谈javascript闭包

    谈一谈javascript闭包

    这篇文章主要介绍了javascript闭包,闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现,感兴趣的小伙伴们可以参考一下
    2016-01-01
  • JavaScript html5 canvas绘制时钟效果

    JavaScript html5 canvas绘制时钟效果

    这篇文章主要介绍了JavaScript html5绘制时钟效果的相关资料,使用HTML5的canvas标签和Javascript脚本,模拟显示了一个时钟,感兴趣的小伙伴们可以参考一下
    2016-03-03
  • 序列化模块json代码实例详解

    序列化模块json代码实例详解

    这篇文章主要介绍了序列化模块json代码实例详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • 图解JavaScript中的this关键字

    图解JavaScript中的this关键字

    这篇文章利用图片讲解的方式向大家解释了JavaScript中的this关键字,JavaScript this 到底指向什么?从这篇文章中大家可以得到想要的答案,需要的朋友可以参考下
    2015-10-10
  • js实现省市级联效果分享

    js实现省市级联效果分享

    这篇文章主要为大家详细介绍了js实现省市级联效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • 基于JavaScript实现瀑布流效果

    基于JavaScript实现瀑布流效果

    这篇文章主要为大家详细介绍了基于JavaScript实现瀑布流效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • js基础之DOM中document对象的常用属性方法详解

    js基础之DOM中document对象的常用属性方法详解

    下面小编就为大家带来一篇js基础之DOM中document对象的常用属性方法详解。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-10-10
  • javascript 构造函数强制调用经验总结

    javascript 构造函数强制调用经验总结

    本文将介绍javascript构造函数调用方面的案例应用,需要了解的朋友可以参考下
    2012-12-12

最新评论