es6学习笔记--解构赋值
昨天学习了es6语法中解构赋值,解构赋值在声明中和函数传参提高了灵活性和便捷性,值得掌握该语法。
let [a,b,c] = [1,2,3];
console.log(a); //
console.log(b); //
console.log(typeof c); // number
console.log(a === 1); // true
let [arr,foo] = [1];
console.log(foo); // undefined
let [x, y] = [1, 2, 3];
console.log(x); //
console.log(y); //
let [x,[a],y] = [1,[2,3],4];
console.log(a) //
let [a,b=2] = [1];
console.log(a) //
console.log(b) //
let [a,b=2] = [1,3];
console.log(`a的值是${a} b的值是${b}` ) // 1 3
let [a,b=2] = [1,undefined];
console.log(`a的值是${a} b的值是${b}` ) // 1 2
let [a,b=2] = [1,null];
console.log(a) //
console.log(null === undefined) // false 严格模式下,null和undefined不等
console.log(b) // null
let x = 1;
let y = 2;
[x, y] = [y, x];
console.log(`x:${x} y:${y}`) // x:2 y:1
let {b, a, c} = {a: 'peter', b: 'Bob'};
console.log(`a:${a} b:${b} c:${c}`) // peter Bob undefined
const obj = {
foo: 'peter',
bar: 25
};
let {foo: name, bar: age} = obj;
console.log(`name:${name} age:${age}`) // name:peter age:25
{obj} = {obj: 10} // Uncaught SyntaxError: Unexpected token =
({obj} = {obj: 10})
在对象解构赋值中,最常用的就是,函数返回值,有多个时,可以按照返回对象的形式返回。
function foo() {
return {
foo: 1,
bar: 2
};
}
let { foo, bar } = foo();
let json = {
id: 1,
status: 200,
data: [123, 456]
};
let { id, status, data: number } = json;
console.log(id, status, number); // 1, 200, [123, 456]
let [a,b,c,d,e,f] = 'hello';
console.log(`a:${a} b:${b} c:${c} d:${d} e:${e} f:${f}`) // a:h b:e c:l d:l e:o f:undefined
console.log(typeof a) // string let [m,n,q,p] = 'w ord';
console.log(`m:${m} n:${n} q:${q} p:${p}`) // m:w n: q:o p:r let {length:len} = 'hello world';
console.log(len) // let [a='H',b,c,d,e,f='W'] = 'hello';
console.log(`a:${a} b:${b} c:${c} d:${d} e:${e} f:${f}`) // a:h b:e c:l d:l e:o f:W
function add([x, y]){
return x + y;
}
console.log(add([1,2])); // 3
function move({x = 0, y = 0} = {}) {
return [x, y];
}
console.log(move({x: 1, y: 2})); // [1, 2]
console.log(move({x: 1})); // [1, 0]
console.log(move({})); // [0, 0]
console.log(move()); // [0, 0]
对应的笔记和实例,我放到了GitHub,https://github.com/sqh17/notes
有什么问题请私信或留下评论,一起加油。
参考资料:
阮一峰大大的es6标准入门:http://es6.ruanyifeng.com/
es6学习笔记--解构赋值的更多相关文章
- ES6学习之 解构赋值
最近看了一个vue的项目,发现作者大量使用了ES6的语法,包括async, Promise, Set, Map还有一些解构赋值, 才发现自己对于ES6的语法缺乏了总结和运用,看得有点艰难,所以重新学习 ...
- ES6学习-4 解构赋值(1)数组的解构赋值
解构赋值是ES6很大的一个提升,为我们带来了很多方便,但用不好,会使程序的可读性变差,所以用时要注意,尽量保持程序的易读性. 数组解构赋值 在JS没有支持解构赋值之前,我们声明几个变量并赋值通常都是像 ...
- es6学习笔记2-解构赋值
解构赋值基本概论就按照一定的模式通过数组或者对象对一组变量进行赋值的过程. 1.通过数组对变量进行赋值: /*通过这种方式赋值要注意左右两边的结构模式要一样,在赋值的时候,根据位置进行赋值对应模式.* ...
- ES6学习-5 解构赋值(2)对象的解构赋值
啥也不说,先举个栗子: 1 let { myname, myage } = { myage: 18, myname: "郭郭" }; 2 console.log(myname) / ...
- ES6-11学习笔记--解构赋值
解构赋值:按照一定模式,从数组和对象中提取值,对变量进行赋值. 数组解构 对象解构 字符串解构 应用场景 曾经的赋值噩梦,非解构赋值数组: let arr = [1, 2, 3]; let ...
- ES6 - 变量的解构赋值学习笔记
变量的解析赋值 数组的解析赋值 es6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值,这就称为解构. var a = 1; var b = 2; var c = 3; //在es6中允许写成 ...
- es6变量的解构赋值学习笔记
1. 解构赋值的规则是,只要等号右边的值不是对象,就先将其转为对象.由于undefined和null无法转为对象,所以对它们进行解构赋值,都会报错. let { prop: x } = undefin ...
- 【JS】325- 深度理解ES6中的解构赋值
点击上方"前端自习课"关注,学习起来~ 对象和数组时 Javascript 中最常用的两种数据结构,由于 JSON 数据格式的普及,二者已经成为 Javascript 语言中特别重 ...
- ES6基础与解构赋值(高颜值弹框小案例!)
let只作用在当前块级作用域内使用let或者const声明的变量,不能再被重新声明let不存在`变量提升` console.log(dad); var dad = '我是爸爸!';//预定义undef ...
随机推荐
- stderr,stdout,a.txt缓冲区别
#include<stdlib.h>#include<stdio.h>#include<string.h>#include<error.h>#inclu ...
- 网络配置:linux学习第一篇
1. 先使用dhclient获取ip 再使用命令ip addr查看获取到的ip 2. 设置静态IP 编辑网卡配置文件,路径: 3. 重启网络服务 命令:systemctl ...
- JDBCTemplate与模板设计方法(二)
前言:上一篇博客介绍了模板方法模式,并且给出了一个小demo,简单对模板方法进行了实现,接下来我们把目光转向spring的源码JDBCTemplate,看一看spring是如何对jdbc进行高度封装的 ...
- Pycharm常用的使用方法
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本控制. ...
- appium+Python 启动app(三)登录
我们根据前面的知识点,用uiautomatorviewer工具来获取我们当前的元素 (注:uiautomatorviewer 是 android sdk 自带的) 知识点:appium的webdriv ...
- 学习python3函数笔记
Python内置了很多有用的函数,我们可以直接调用. 要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数.可以直接从Python的官方网站查看文档: http://doc ...
- java打包项目将配置文件放在包外面(后续还会有补充)
项目中也经常单独将一部分功能独立做Java Project,然后打成jar包供其他项目调用.如果jar包中需要读取配置文件信息,则很少把该配置打进jar包,因为它不方便修改,更多都是采用jar包读取外 ...
- nyoj 1129 Salvation 模拟
思路:每个坐标有四种状态,每个点对应的每种状态只能走一个方向,如果走到一个重复的状态说明根本不能走到终点,否则继续走即可. 坑点:有可能初始坐标四周都是墙壁,如果不判断下可能会陷入是死循环. 贴上测试 ...
- Redis 设置开机启动
1. 将下列代码保存为文件redis, 置于 /etc/init.d 下面 ########################### # chkconfig: 2345 90 10 redis服务必须在 ...
- 网络基础tcp/ip协议一
计算机网络: 硬件方面:通过线缆将网络设备和计算机连接起来 软件方面:操作系统,应用软件,应用程序通过通信线路互连 实现资源共享,信息传递 计算机网络的功能: 数据通信 资源共享 增加可靠性 提高系统 ...