小编的上一篇文章更新了es6中关于变量定义的问题,这篇文章继续来一些实用的干货,关于数组、对象的赋值问题。特别是在前后端合作项目的时候,对后端数据的拆分,还有就是对于函数的默认值的惰性赋值问题。看完下面的,相信会忍不住对es6伸出大拇指。真是太方便了。

一、数组的结构赋值
1、es5语法

1 let arr = [1,2,3]
2 let a = arr[0]
3 let b = arr[1]
4 let c = arr[2]
5 console.log(a,b,c) // 1 2 3

2、es6语法

let [a,b,c] = [1,2,3]
console.log(a,b,c) // 1 2 3 let [a,b,c] = [1,2,[3,4]]
console.log(a,b,c) // 1 2 [3,4] let [a,b,c,d] = [1,2,[3,4]]
console.log(a,b,c) // 1 2 [3,4] undefind

3、惰性赋值

let [a,b,c,d = 5] = [1,2,[3,4]]
console.log(a,b,c) // 1 2 [3,4] 5 let [a,b,c,d = 5] = [1,2,[3,4],6]
console.log(a,b,c) // 1 2 [3,4] 6

二、对象的结构赋值

1、es5语法

let user = {
name:"lilei",
age:34
}
let name = user.name
let age = user.age
console.log(name,age) // lilei 34

2、es6语法

let user = {
name:"lilei",
age:34
}
let {name,age} = user
console.log(name,age) // lilei 34

3、惰性赋值(默认值)

let {name,age=18} = {
name:"lilei"
}
console.log(name,age) // lilei 18

4、对象解构赋值的时候,与顺序无关,只与key有关

let user = {
name:"lilei",
age:34
}
let {age,name} = user
console.log(name,age) // lilei 34

5、变量重命名

let user = {
name:"lilei",
age:34
}
let {name:uname,age:uage} = user
console.log(name,age) // 报错,
console.log(uname,uage) // lilei 34

三、字符串解构赋值

1、es5语法

let str = "abcde"
for(let i = 0;i<str.length;i++){
console.log(i) // a b c d e
}

2、es6语法(类比数组解构赋值)

let [a,b,c,d,e] = "abcde"
console.log(a,b,c,d,e) // a b c d e

四、json解构赋值

let json = '{"a":"hello","b":"world"}'
let {a,b} = JSON.parse(json)
console.log(a,b) // hello world

五、关于惰性赋值实例

1、函数参数

function foo([a,b,c]){
console.log(a,b,c)
}
let arr = [1,2,3]
foo(arr) // 1 2 3
function foo({name,age}){
console.log(name,age)
}
let obj = {
name:"lilei",
age:18
}
foo(obj)

2、函数返回值

function foo(){
let obj = {
name:"lilei",
age:18,
school:"University"
}
return obj
}
let {name,age} = foo()
console.log(name,age) // lilei 18

3、函数参数默认值

function foo({name,age,school="University"}){
console.log(name,age,school)
}
let obj = {
name:"lilei",
age:18
}
foo(obj) // lilei 18 University

4、其他

function foo(){
console.log(123)
}
let [a=foo()] = [1] // 什么也不输出
let [a=foo()] = [] // 输出123

ES6中的变量结构赋值的更多相关文章

  1. es6中的变量声明

    目录 es6中的变量声明 变量的声明 es6中的变量声明 变量的声明 for (var i = 0; i < 5; i++) { console.log(i) } var声明 作用域问题 上面的 ...

  2. ES6中的变量的解构赋值, 解放我们的双手,实现变量的批量赋值

    ES6--变量的解构赋值 引言 正文 一.数组的解构赋值 解构失败 不完全解构 默认值 二.对象的解构赋值 三.字符串的解构赋值 结束语 引言 变量的解构赋值, 听起来很复杂, 简单点说可以理解成批量 ...

  3. ES6中的解构赋值

    在解释什么是解构赋值前,我们先来看一下, ES5 中对变量的声明和赋值. var str = 'hello word'; 左边一个变量名,右边可以是字符串,数组或对象. ES6 中增加了一种更为便捷的 ...

  4. ES6 对象增强和结构赋值

    The enhanced Object literals: ES6 has added some new syntax-based extensions to {} object literal fo ...

  5. 【JS】325- 深度理解ES6中的解构赋值

    点击上方"前端自习课"关注,学习起来~ 对象和数组时 Javascript 中最常用的两种数据结构,由于 JSON 数据格式的普及,二者已经成为 Javascript 语言中特别重 ...

  6. ES6中声明变量 let和const特点

    在ES6中我们有两种定义变量的方式:let    const let特点: 1.let定义时不会进行变量声明提升 2.变量不允许被重复定义 3.变量不可以被删除 4.在for循环当中用let定义i 循 ...

  7. ES6走一波 变量结构赋值

    Destructuring  变量的解构赋值 是一种模式匹配 ES6我关注点之一是用途  能否举些好例子是检验学习到位的方法之一 交换变量值 函数返回多个值 函数入参为对象.数组,内部使用更简洁 意义 ...

  8. Shell 中字符串变量的赋值注意点

    1. 变量赋值 语法:var="saaaa" PS: 等号两边不能有空格 2. 脚本示例如下: #!/bin/sh # Get bug activity info # usage ...

  9. ES6 - Note2:解构赋值

    ES6的解构赋值就是利用模式匹配从按照一定模式的数组或者对象中提取值赋值给变量. 1.数组的解构赋值 在ES6以前,变量的赋值是直接指定的,以后可以这么来写,如下所示 let [a,b,c] = [1 ...

随机推荐

  1. Sqli 注入点解析

    目录 Less-1: 字符型注入 Less-2: 数字型注入 Less-3: 单引号字符型+括号 Less-4: 双引号字符型+括号 Less-5: 单引号字符型+固定输出信息 (floor报错注入& ...

  2. POJ2406简单KMP

    题意:      给一个字符串,求最大的前缀循环周期,就是最小的循环节对应的最大的那个周期. 思路:      KMP的简单应用,求完next数组后有这样的应用:next[i] :是最大循环节的第几位 ...

  3. POJ2771最大独立集元素个数

    题意:       女生和男生之间只要满足四个条件中的一个,那么两个人就不会在一起!然后给出一些男生和女生,问最多多少人一起做活动彼此不会产生暧昧关系. 思路:       这样的问题还是比较裸的问法 ...

  4. 分解uber依赖注入库dig-源码分析

    上一篇帖子 分解uber依赖注入库dig-使用篇 把如何使用dig进行代码示例说明,这篇帖子分析dig的源码,看他是如何实现依赖注入的. dig实现的中心思想:所有传入Provide的函数必须要有除e ...

  5. Learning Memory-guided Normality代码学习笔记

    Learning Memory-guided Normality代码学习笔记 记忆模块核心 Memory部分的核心在于以下定义Memory类的部分. class Memory(nn.Module): ...

  6. jpa查找数据库最新一条消息

    主要字段说明: pid:指导记录主键 user_pid:用户主键 competition_project_pid:用户作品 Mysql表 Repository /** * 指导记录 * @date 2 ...

  7. python常识系列07-->python利用xlwt写入excel文件

    前言 读书之法,在循序而渐进,熟读而精思.--朱熹 抽空又来写一篇,毕竟知识在于分享! 一.xlwt模块是什么 python第三方工具包,用于往excel中写入数据:(ps:只能创建新表格,不能修改表 ...

  8. Power BI官方客户案例2021

    微软商业应用峰会Power BI客户案例,今年的客户案例相比前2年不同,主要是大客户,基本都是行业Top公司. 选取零售,医药制造,教育,医疗IT等行业龙头.沃尔玛,拜耳,滑铁卢大学的分享内容非常棒, ...

  9. 是时候学习Linux了

    前言: Linux是一个开源.免费的操作系统.其稳定性.安全性.处理多并发已经得到业界的认可,目前很多企业级的项目都会部署到Linux/unix系统上.如果你还不太了解Linux,希望本篇文章能够带你 ...

  10. 关于Redis哨兵机制,7张图详解!

    写在前面 之前有位朋友去面试被问到Redis哨兵机制,这道题其实很多小伙伴都应该有被问到过!本文将跟大家一起来探讨如何回答这个问题!同时用XMind画了一张导图记录Redis的学习笔记和一些面试解析( ...