ES6-解构

这篇具有很好参考价值的文章主要介绍了ES6-解构。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


什么是解构

🍿🍿🍿es6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,称之为解构。
解构是es6的新特性,比ES5代码简介、清晰、减少代码量
ES5中的为变量赋值,只能直接指定值。

var name = '天秀'

数组解构

es6匹配模式写法

var [a,b,c] = [1,2,3];
//这种模式属于 ‘模式匹配’,只要等两边的模式相同,左边的变量就会被赋予对应的值
var x=1;
var y = [1,2];
var z = 3;
var [x,y,z] = [1,[1,2],3];// 数组
var [x,y,z] = [1,{'name':'any'},3];// 对象

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

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

解构赋值允许指定默认值

var [x=1,y=2] = [10,20];// x=10,y=20
var [x=1,y=2] = [10];// x= 10,y=2

只有当一个数组成员严格等于undefined时,默认值才会生效

var [x=1]=[undefined];// x=1
var [x,y ='b'] = ['a',undefined];// x='a',y='b';

惰性求值
🥫🥫🥫如果默认值是一个表达式,那么这个表达式是惰性求值的,即只有在用到的时候,才会求值

function f(){
  return '上山打老虎'
}
var [x = f()] = [1];// x=1
var [x = f()] = [];// x='上山打老虎';
var [x = f()] = [undefined];// x = '上山打老虎'

对象解构

🌭🌭🌭与数组不同的是按次序排列的,变量的取值由它的位置决定,而对象的属性没有次序,变量必须与属性同名,才能取到正确的值。
对象解构的写法

let {a,b} = {b:1,a:2};

运用

var obj = {
	id:1,
	name:'abc',
	sex:'男',
	friends:['x','y','z'],
	o:{id:2,msg:'hello'}
};
// es5从对象中取值的方式
var newId = obj.id;
// es6通过解构取值
var {id,name,sex,o} = obj;

别名:变量名与属性名不一致,name是匹配模式,n是变量

var {name:n,age:a} = {name:'张三',age:20};

同样允许指定默认值,生效的条件是,属性值严格等于undefined

let {x,y = 20} = {x:100};//x = 100,y = 20
let {x:y = 20} = {x:50};// y = 50
let {x:a = 10,y:b=20} = {x:undefined};// a= 10,b=20

注意
如果要将一个已经声明的变量用于解构赋值,需注意

let x;
{x} = {x:1};
//js引擎会将{x}理解成一个代码块,从而发生语法错误,只有不将大括号写在行首,才能解决
({x} = {x:1})

字符解构

let [a,b,c,d,e] = 'express'

函数参数解构

// 数组解构
function add([x,y]){
  return x + y;
}
add([1,2]);// 3
// 对象解构
function add({x,y}){
  return x + y;
}
add({x:3,y:2});// 5

参数默认值的定义

function fun([x=0,y=0]){
	return x + y;
};
fun([1,2]);
// 目的是当实参为空时,不会报错

总结

解构新特性的优势可以使代码简洁,清晰,减少代码量。文章来源地址https://www.toymoban.com/news/detail-682535.html

到了这里,关于ES6-解构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ES6 解构

    解构的语法中, ... (展开运算符)和 {} (对象字面量)扮演着不同的角色。 ... (展开运算符): 在解构中, ... 被用作展开运算符,用于将数组或对象中的剩余元素获取为一个单独的变量。 示例: 在上述示例中, ...rest 表示剩余的数组元素。变量 a 和 b 分别赋值为数组的

    2024年02月13日
    浏览(38)
  • ES6: 解构赋值

    解构赋值是一种快速为变量赋值的简洁语法,本质上仍然是为变量赋值,分为数组解构、对象解构两大类型。 数组解构是将数组的单元值快速批量赋值给一系列变量的简洁语法,如下代码所示: 数组解构赋值: eg1: eg2: eg3: eg4: eg5: 交换2个变量的值 总结: 赋值运算符 = 左侧的

    2024年02月09日
    浏览(46)
  • [ES6]解构与赋值

    解构赋值是对赋值运算符的扩展。 通过解构,可以更加简单的获取复杂对象的属性 解构的源,解构赋值表达式的右边部分 解构的目标,解构赋值表达式的左边部分 当变量名称与对象中的属性名称一致时,可简写 {attr} 使用解构方式获取对象参数中的对应属性,这样在函数内部

    2023年04月22日
    浏览(35)
  • ES6解构对象、数组、函数传参

      目录  1.对象解构 2.对象解构的细节处理 2.1.解构的值对象中不存在时 2.2.给予解构值默认参数   2.3.非同名属性解构 3.数组解构 3.1基础解构语法 3.2数组嵌套解构 4.函数解构传参 5.解构小练习 在ES6的新语法中新增了解构的方法,它可以让我们很方便的从数组或者对象身上取

    2024年02月16日
    浏览(33)
  • 【ES6】解构语句中的冒号(:)

    在解构赋值语法中,冒号(:)的作用是为提取的字段指定一个新的变量名。 让我们以示例 const { billCode: code, version } = route.query 来说明: { billCode: code, version } 表示从 route.query 对象中提取 billCode 和 version 字段。 冒号(:)后面的 code 是新的变量名,表示将 billCode 字段的值赋给

    2024年01月21日
    浏览(28)
  • 深入理解 ES6 的解构表达式

    还是大剑师兰特 :曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。 No. 内容链接 1 Openlayers 【入门教

    2024年04月13日
    浏览(29)
  • ES6之 变量的解构赋值 ➕ 扩展运算符(…)

    一看就懂,代码如下: 效果如下: 如下: 如下: 什么是扩展运算符(…运算符)? 就是展开语法 (Spread syntax), 可以在函数调用/数组构造时,将数组表达式或者 string 在语法层面展开;还可以在构造字面量对象时,将对象表达式按 key-value 的方式展开。(译者注: 字面量一般指

    2024年02月09日
    浏览(34)
  • ES6 数组解构时不加分号引发的问题

    由于没有在适当的行尾加上分号,导致下面的代码被误读: 被语法解释器解释成 上面这行代码并不会报错,并且会将末尾的 [4, 5, 6] 赋值给 [value1_1, value1_2, value1_3] 这样就引发了直接打印 [value1_1, value1_2, value1_3] 的结果不等于 myhandle(1, 2) 的返回值。 可以通过尝试下面的代码:

    2024年02月07日
    浏览(41)
  • 【React系列】ES6学习笔记(一)let与const、解构赋值、函数参数默认值\rest参数\箭头函数、数组和对象的扩展、Set和Map等

    本文参考自电子书《ECMAScript 6 入门》:https://es6.ruanyifeng.com/ 尽量使用 let 声明变量,而不是 var 。 let 声明的变量是 块级作用域 , var 声明的变量是 全局作用域 。 使用 let 变量 必须先声明再使用,否则报错,不存在变量提升 。相对的 var 声明的变量如果提前使用,不会报错

    2024年02月03日
    浏览(37)
  • JavaScript ES6实现继承

    1 对象的方法补充 2 原型继承关系图 3 class方式定义类 4 extends实现继承 5 extends实现继承 6 多态概念的理 function 创建的名称如果开头是大写的,那这个创建的不是函数,是创建了类。 可以把class创建的类当做是function创建的类的一种语法糖。但是在直接使用的方面是有不同之处

    2024年02月16日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包