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 ...
随机推荐
- css居中方法与双飞翼布局
居中 类型 方法 对应属性 水平 垂直 水平&垂直 1.父元素使用外边距自动 2.子元素显示行内块级元素,写入内容,父元素设置文本居中 3.给父元素开启非绝对和固定定位作为子元素开启绝对定位的 ...
- git添加本地仓库与远程仓库连接
在本地建立一个文件夹,需要与远程git仓库进行连接,具体方法: <1>首先进入所在文件目录执行: git init 初始化git,紧接着 git add . git commit -m ...
- fiddler 抓取 nodejs
nodejs 代理指向 fiddler var options = { ........ }; options.path = 'http://' + options.host + ...
- CENTOS6.6上搭建单实例ORACLE12C
本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 自己在centos6.6上搭建的单实例oracle12c 由 ...
- Shiro的原理及Web搭建
shiro(java安全框架) 以下都是综合之前的人加上自己的一些小总结 Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码学和会话管理.使用Shiro的易于理解的A ...
- python自动化--语言基础1--数据类型及类型转换
Python中核心的数据类型有哪些?变量(数字.字符串.元组.列表.字典) 什么是数据的不可变性?哪些数据类型具有不可变性数据的不可变是指数据不可更改,比如: a = ("abc" ...
- Pycharm常用的使用方法
PyCharm是一种Python IDE,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具,比如调试.语法高亮.Project管理.代码跳转.智能提示.自动完成.单元测试.版本控制. ...
- Linux socket 类封装 (面向对象方法)
/* * socketfactory.h * * Created on: 2014-7-19 * Author: root */ #ifndef SOCKETFACTORY_H_ #define SO ...
- PowerDesigner Constraint name uniqueness 问题处理(转载)
使用PowerDesigner生成数据库脚本时报 Constraint name uniqueness 错误: 双击每行错误,发现外键引用的名字有重复的: 惯性去网上找解决办法,找到的主要是两个方法: ...
- Maven项目热部署,修改代码后不用重启tomcat服务器
只需要在pom.xml文件中添加 <build> <finalName>MySSM</finalName> <!-- 指定部署的服务器类型 --> &l ...