小编的上一篇文章更新了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. java.lang.ClassNotFoundException的解决方案

    举一个特定的例子 java.lang.ClassNotFoundException: org.apache.commons.dbcp.BasicDataSource 到Maven中央仓库下载 当我们看 ...

  2. JDK库rt包中常用包说明

    日常开发中的api都在rt包中,具体路径为:/jdk1.8.0_162/jre/lib中,注意是在jre中. 每个包中大致包含以下几个部分: 接口 类 枚举 异常 错误 注解 J2EE开发中常用的包 ...

  3. c++vs类图

    安装visual studio扩展开发工具 一定要勾选右侧栏中的类设计器 安装完成后在菜单栏点击视图--类视图,会出现类视图框,在框中右键项目--查看类视图,就自动生成了.

  4. 运行程序显示丢失“MSVCR100D.dll”

    前言 写了一个Dll注入工具,结果发现程序在其他机器上会出现丢失"MSVCR100D.dll".这个dll是vs2010自带的动态链接库,如果在没安装vs2010运行库的电脑中使用 ...

  5. lower_bound和upper_bound的实现

    int lowerBound(int* nums, int numsSize, int target) { //注意left和right的初始值必须是left = 0, right = numsSzi ...

  6. 浅尝js垃圾回收机制

    局部作用域内的变量,在函数执行结束之后就会被js的垃圾回收机制销毁   为什么要销毁局部变量? => 为了释放内存   js垃圾回收机制何时会销毁局部变量 : 如果局部变量无法再得到访问,就会被 ...

  7. MSSQL·查询存储过程中的关键字

    阅文时长 | 0.22分钟 字数统计 | 408字符 主要内容 | 1.引言&背景 2.声明与参考资料 『MSSQL·查询存储过程中的关键字』 编写人 | SCscHero 编写时间 | 20 ...

  8. 1Spring注入小结

    Spring注入小结 (在Application.xml中) Spring学习笔记 周芋杉2021/5/14 1.基本注入类型注入 注入前的准备 <bean id="#配置文件的唯一标 ...

  9. 二、Python流程控制练习题

    一.分支结构-if等 练习题: 练习1:英制单位与公制单位互换 练习2:掷骰子决定做什么 练习3:百分制成绩转等级制 练习4:输入三条边长如果能构成三角形就计算周长和面积 练习5:个人所得税计算器 练 ...

  10. top命令查看CPU状态信息:%us、%sy、%ni、%id、%wa、%hi、%si、%st 表示的是什么意思

    Linux CPU负载状态:%us/%sy/%ni/%id/%wa/%hi/%si/%st含义 2018-08-26 分类:Linux 评论(0)   缙哥哥发现用了雅黑的探针,在 Linux 的 C ...