基于ES6作用域和解构赋值详解


Posted in Javascript onNovember 03, 2017

ES6 强制开启严格模式

作用域

•var 声明局部变量,for/if花括号中定义的变量在花括号外也可访问

•let 声明的变量为块作用域,变量不可重复定义

•const 声明常量,块作用域,声明时必须赋值,不可修改

// const声明的k指向一个对象,k本身不可变,但对象可变

function test() {
 const k={
  a:1
 }
 k.b=3;
 
 console.log(k);
}

test()解构赋值

{
 let a, b, 3, rest;
 [a, b, c=3]=[1, 2];

 console.log(a, b);
}
//output: 1 2 3

{
 let a, b, 3, rest;
 [a, b, c]=[1, 2];

 console.log(a, b);
}
//output: 1 2 undefined

{
 let a, b, rest;
 [a, b, ...rest] = [1, 2, 3, 4, 5, 6];
 console.log(a, b, rest);
}
//output:1 2 [3, 4, 5, 6]

{
 let a, b;
 ({a, b} = {a:1, b:2})

 console.log(a ,b);
}
//output: 1 2

使用场景

变量交换

{
 let a = 1;
 let b = 2;
 [a, b] = [b, a];
 console.log(a, b);
}

获取多个函数值

{
 function f(){
  return [1, 2]
 }
 let a, b;
 [a, b] = f();
 console.log(a, b);
}

获取多个函数返回值

{
 function f(){
  return [1, 2, 3, 4, 5]
 }
 let a, b, c;
 [a,,,b] = f();
 console.log(a, b);
}
//output: 1 4

{
 function f(){
  return [1, 2, 3, 4, 5]
 }
 let a, b, c;
 [a, ...b] = f();
 console.log(a, b);
}
//output: 1 [2, 3, 4, 5]

对象解构赋值

{
 let o={p:42, q:true};
 let {p, q, c=5} = o;

 console.log(p ,q);
}
//output: 42 true 5

获取json值

{
 let metaData={
  title: 'abc',
  test: [{
   title: 'test',
   desc: 'description'
  }]
 }
 let {title:esTitle, test:[{title:cnTitle}]} = metaData;
 console.log(esTitle, cnTitle);
}
//Output: abc test

以上这篇基于ES6作用域和解构赋值详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
基于jQuery的日期选择控件
Oct 27 Javascript
JavaScript高级程序设计(第3版)学习笔记8 js函数(中)
Oct 11 Javascript
seajs1.3.0源码解析之module依赖有序加载
Nov 07 Javascript
javascript算法题:求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Apr 01 Javascript
jquery中map函数遍历数组用法实例
May 18 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
May 09 Javascript
深入理解(function(){... })();
Aug 16 Javascript
js闭包用法实例详解
Dec 13 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
Jun 26 jQuery
vuejs实现递归树型菜单组件
Jan 13 Javascript
js类的继承定义与用法分析
Jun 21 Javascript
Vue生命周期activated之返回上一页不重新请求数据操作
Jul 26 Javascript
AngularJS中controller控制器继承的使用方法
Nov 03 #Javascript
vue解决跨域路由冲突问题思路解析
Nov 03 #Javascript
React-intl 实现多语言的示例代码
Nov 03 #Javascript
ztree实现左边动态生成树右边为内容详情功能
Nov 03 #Javascript
基于angular-utils-ui-breadcrumbs使用心得(分享)
Nov 03 #Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
Nov 03 #Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
Nov 03 #Javascript
You might like
PHP+MySQL 手工注入语句大全 推荐
2009/10/30 PHP
PHP代码优化之成员变量获取速度对比
2014/02/28 PHP
php中动态修改ini配置
2014/10/14 PHP
PHP-FPM运行状态的实时查看及监控详解
2016/11/18 PHP
jquery插件jbox使用iframe关闭问题
2009/02/09 Javascript
Safari5中alert的无限循环BUG
2011/04/07 Javascript
jquery scrollTop方法根据滚动像素显示隐藏顶部导航条
2013/05/27 Javascript
解决jquery插件冲突的问题
2014/01/23 Javascript
jQuery中even选择器的定义和用法
2014/12/23 Javascript
jquery简单的弹出层浮动层代码
2015/04/27 Javascript
AngularJS实现Model缓存的方式
2016/02/03 Javascript
JS+Canvas绘制时钟效果
2020/08/20 Javascript
jquery css实现邮箱自动补全
2016/11/14 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
微信web端后退强制刷新功能的实现代码
2018/03/04 Javascript
使用Vue动态生成form表单的实例代码
2018/04/26 Javascript
小程序点赞收藏功能的实现代码示例
2018/09/07 Javascript
jQuery实现动态操作table行
2020/11/23 jQuery
[02:06]DOTA2英雄基础教程 暗影萨满
2013/12/16 DOTA
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
pyside+pyqt实现鼠标右键菜单功能
2020/12/08 Python
正则给header的冒号两边参数添加单引号(Python请求用)
2019/08/09 Python
numpy中三维数组中加入元素后的位置详解
2019/11/28 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
学会python自动收发邮件 代替你问候女友
2020/05/20 Python
python如何删除列为空的行
2020/07/17 Python
银行实习人员自我鉴定
2013/09/22 职场文书
中专毕业生自我鉴定
2013/11/21 职场文书
组织鉴定材料
2014/06/02 职场文书
80后婚前协议书范本
2014/10/24 职场文书
优秀校长事迹材料
2014/12/24 职场文书
百年孤独读书笔记
2015/06/29 职场文书
vue引入Excel表格插件的方法
2021/04/28 Vue.js
Python连续赋值需要注意的一些问题
2021/06/03 Python