基于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 相关文章推荐
[Web]防止用户复制页面内容和另存页面的方法
Feb 06 Javascript
JS 添加千分位与去掉千分位的示例
Jul 11 Javascript
使用JS读秒使用示例
Sep 21 Javascript
javascript实现无限级select联动菜单
Jan 02 Javascript
JavaScript中判断函数、变量是否存在
Jun 10 Javascript
JavaScript数组各种常见用法实例分析
Aug 04 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
Dec 08 Javascript
JS及JQuery对Html内容编码,Html转义
Feb 17 Javascript
js实现下一页页码效果
Mar 07 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
Jul 08 jQuery
详解webpack模块加载器兼打包工具
Sep 11 Javascript
微信小程序实现顶部下拉菜单栏
Nov 04 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二维数组的去重问题解析
2011/07/17 PHP
PHP的array_diff()函数在处理大数组时的效率问题
2011/11/27 PHP
页面利用渐进式JPEG来提升用户体验度
2014/12/01 PHP
php判断对象是派生自哪个类的方法
2015/06/20 PHP
PHP实现基于状态的责任链审批模式详解
2019/05/31 PHP
Avengerls vs KG BO3 第二场2.18
2021/03/10 DOTA
两个select之间option的互相添加操作(jquery实现)
2009/11/12 Javascript
JavaScript实现标题栏文字轮播效果代码
2015/10/24 Javascript
jQuery.trim() 函数及trim()用法详解
2015/10/26 Javascript
基于jQuery实现弹出可关闭遮罩提示框实例代码
2016/07/18 Javascript
判断js的Array和Object的实现方法
2016/08/29 Javascript
Javascript中关于Array.filter()的妙用详解
2016/12/04 Javascript
a标签置灰不可点击的实现方法
2017/02/06 Javascript
代码详解Vuejs响应式原理
2017/12/20 Javascript
Vue实现美团app的影院推荐选座功能【推荐】
2018/08/29 Javascript
python检测是文件还是目录的方法
2015/07/03 Python
python文件的md5加密方法
2016/04/06 Python
Python3.4 tkinter,PIL图片转换
2018/06/21 Python
详解如何将python3.6软件的py文件打包成exe程序
2018/10/09 Python
python从子线程中获得返回值的方法
2019/01/30 Python
一篇文章弄懂Python中所有数组数据类型
2019/06/23 Python
Django中自定义查询对象的具体使用
2019/10/13 Python
python GUI库图形界面开发之PyQt5多线程中信号与槽的详细使用方法与实例
2020/03/08 Python
python 中不同包 类 方法 之间的调用详解
2020/03/09 Python
python开发一个解析protobuf文件的简单编译器
2020/11/17 Python
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
世界上最全面的草药补充剂和顶级品牌维生素网站:HerbsPro
2019/01/20 全球购物
创建索引时需要注意的事项
2013/05/13 面试题
什么是属性访问器
2015/10/26 面试题
工作室成员个人发展规划范文
2014/01/24 职场文书
《花瓣飘香》教学反思
2014/04/15 职场文书
党员十八大心得体会
2014/09/12 职场文书
认错检讨书
2014/10/02 职场文书
文艺演出主持词
2015/07/01 职场文书
mysql联合索引的使用规则
2021/06/23 MySQL
zabbix如何添加监控主机和自定义监控项
2022/08/14 Servers