基于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 事件的命名空间简单了解
Nov 22 Javascript
jQuery 获取兄弟元素的几种不错方法
May 23 Javascript
jQuery延迟加载图片插件Lazy Load使用指南
Mar 25 Javascript
jquery实现页面虚拟键盘特效
Aug 08 Javascript
jQuery 利用$.ajax 时获取原生XMLHttpRequest 对象的方法
Aug 25 Javascript
jquery获取input type=text中的值的各种方式(总结)
Dec 02 Javascript
推荐三款日期选择插件(My97DatePicker、jquery.datepicker、Mobiscroll)
Apr 21 jQuery
使用async-validator编写Form组件的方法
Jan 10 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
Mar 19 Javascript
解决循环中setTimeout执行顺序的问题
Jun 20 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
Sep 27 Javascript
angula中使用iframe点击后不执行变更检测的问题
May 10 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
点评山进PR-D3L三波段收音机
2021/03/02 无线电
既简单又安全的PHP验证码 附调用方法
2016/06/02 PHP
utf8的编码算法 转载
2006/12/27 Javascript
Javascript 遍历对象中的子对象
2009/07/03 Javascript
跟着JQuery API学Jquery 之二 属性
2010/04/09 Javascript
jquery批量控制form禁用的代码
2013/08/06 Javascript
JQuery实现鼠标滑过显示导航下拉列表
2013/09/12 Javascript
使用jQuery时Form表单元素ID和name命名大忌
2014/03/06 Javascript
jQuery响应鼠标事件并隐藏与显示input默认值
2014/08/24 Javascript
jQuery可见性过滤器:hidden和:visibility用法实例
2015/06/24 Javascript
分享javascript计算时间差的示例代码
2020/03/19 Javascript
jQueryUI DatePicker 添加时分秒
2016/06/04 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
JS实现给对象动态添加属性的方法
2017/01/05 Javascript
JS二分查找算法详解
2017/11/01 Javascript
浅谈vuex 闲置状态重置方案
2018/01/04 Javascript
详解为Bootstrap Modal添加拖拽的方法
2018/01/05 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
详解Python自建logging模块
2018/01/29 Python
Python常见MongoDB数据库操作实例总结
2018/07/24 Python
wtfPython—Python中一组有趣微妙的代码【收藏】
2018/08/31 Python
pytorch索引查找 index_select的例子
2019/08/18 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
Python爬虫小例子——爬取51job发布的工作职位
2020/07/10 Python
可能这些是你想要的H5软键盘兼容方案(小结)
2019/04/23 HTML / CSS
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
如何打印出当前源文件的文件名以及源文件的当前行号
2015/04/05 面试题
家佳咖啡店创业计划书
2013/12/27 职场文书
跟单文员岗位职责
2014/01/03 职场文书
两年的个人工作自我评价
2014/01/10 职场文书
幼儿园安全生产月活动总结
2014/07/05 职场文书
检讨书1000字
2014/10/11 职场文书
2014年销售工作总结
2014/12/01 职场文书
春节随笔
2015/08/15 职场文书