ES6中的变量结构赋值
小编的上一篇文章更新了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中的变量结构赋值的更多相关文章
- es6中的变量声明
		
目录 es6中的变量声明 变量的声明 es6中的变量声明 变量的声明 for (var i = 0; i < 5; i++) { console.log(i) } var声明 作用域问题 上面的 ...
 - ES6中的变量的解构赋值, 解放我们的双手,实现变量的批量赋值
		
ES6--变量的解构赋值 引言 正文 一.数组的解构赋值 解构失败 不完全解构 默认值 二.对象的解构赋值 三.字符串的解构赋值 结束语 引言 变量的解构赋值, 听起来很复杂, 简单点说可以理解成批量 ...
 - ES6中的解构赋值
		
在解释什么是解构赋值前,我们先来看一下, ES5 中对变量的声明和赋值. var str = 'hello word'; 左边一个变量名,右边可以是字符串,数组或对象. ES6 中增加了一种更为便捷的 ...
 - ES6 对象增强和结构赋值
		
The enhanced Object literals: ES6 has added some new syntax-based extensions to {} object literal fo ...
 - 【JS】325- 深度理解ES6中的解构赋值
		
点击上方"前端自习课"关注,学习起来~ 对象和数组时 Javascript 中最常用的两种数据结构,由于 JSON 数据格式的普及,二者已经成为 Javascript 语言中特别重 ...
 - ES6中声明变量 let和const特点
		
在ES6中我们有两种定义变量的方式:let const let特点: 1.let定义时不会进行变量声明提升 2.变量不允许被重复定义 3.变量不可以被删除 4.在for循环当中用let定义i 循 ...
 - ES6走一波 变量结构赋值
		
Destructuring 变量的解构赋值 是一种模式匹配 ES6我关注点之一是用途 能否举些好例子是检验学习到位的方法之一 交换变量值 函数返回多个值 函数入参为对象.数组,内部使用更简洁 意义 ...
 - Shell 中字符串变量的赋值注意点
		
1. 变量赋值 语法:var="saaaa" PS: 等号两边不能有空格 2. 脚本示例如下: #!/bin/sh # Get bug activity info # usage ...
 - ES6 - Note2:解构赋值
		
ES6的解构赋值就是利用模式匹配从按照一定模式的数组或者对象中提取值赋值给变量. 1.数组的解构赋值 在ES6以前,变量的赋值是直接指定的,以后可以这么来写,如下所示 let [a,b,c] = [1 ...
 
随机推荐
- Msfvenonm生成一个后门木马
			
在前一篇文章中我讲了什么是Meterpreter,并且讲解了Meterpreter的用法.传送门-->Metasploit之Meterpreter 今天我要讲的是我们用Msfvenom制作一个木 ...
 - POJ1018贪心(多路归并的想法)
			
题意: 有n个服务器,每个服务器都要安装网线(必须也只能安装一个),然后每个服务器都有mi种选择网线的方式,每种方式两个参数,一个是速度b,另一个是价钱p,然后让你找到一个最大的比值 min ...
 - UVA10391复合词
			
题意: 给定一个词典,然后问里面那些是复合词,复合词就是当前这个单词正好是有两个单词拼接而成. 思路: 用map来标记是否出现过,然后先按长短排序,把每个单体拆分成任意两个可能的 ...
 - Linux(CentOS-8)安装MySQL8.0.11
			
CentOS安装MySQL8.0.11 总的思路就是:安装MySQL,编写配置文件,配置环境变量,成功开启服务,登陆并修改ROOT密码 开启远程访问的思路就是:授权用户所有IP都可以访问,系统的数据库 ...
 - PHP 下载apk文件
			
方式一.public function downApkFile(){ $path = Env::get('root_path')."apk/"; //路径 $file_name = ...
 - Java安全之FastJson JdbcRowSetImpl 链分析
			
Java安全之FastJson JdbcRowSetImpl 链分析 0x00 前言 续上文的Fastjson TemplatesImpl链分析,接着来学习JdbcRowSetImpl 利用链,Jdb ...
 - 关于Aborted connection告警日志的分析
			
前言: 有时候,连接MySQL的会话经常会异常退出,错误日志里会看到"Got an error reading communication packets"类型的告警.本篇文章我们 ...
 - 测试报告$\alpha$
			
pytorch可视化编程网站VisualPytorch NAG \(\alpha\)版本发布了!点击网址访问:VisualPytorch 一.测试查虫(bug detection) 测试贯穿了开发.集 ...
 - 基础知识:DFRduino UNO R3最全资料详解
			
一.概述篇:1. 什么是DFRduino UNO R3?DFRduino UNO R3是一块基与开放原始代码的Simple i/o平台,並且具有使用类似java,C语言的开发环境.让您可以快速使用Ar ...
 - echo "This is line $LINENO"返回行号
			
echo "This is line $LINENO"返回行号 LINENO 变量LINENO返回它在脚本里面的行号. #!/bin/bash echo "This is ...