基于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 相关文章推荐
Ext grid 添加右击菜单
Nov 26 Javascript
Exitjs获取DataView中图片文件名
Nov 26 Javascript
javascript/jquery获取地址栏url参数的方法
Mar 05 Javascript
jQuery实现鼠标划过修改样式的方法
Apr 14 Javascript
jQuery toggle 代替方法
Mar 22 Javascript
javascript如何实现360度全景照片问题汇总
Apr 04 Javascript
利用vue写todolist单页应用
Dec 15 Javascript
详解vue服务端渲染(SSR)初探
Jun 19 Javascript
彻底理解js面向对象之继承
Feb 04 Javascript
使用Node.js在深度学习中做图片预处理的方法
Sep 18 Javascript
Vue基于iview实现登录密码的显示与隐藏功能
Mar 06 Javascript
JS+CSS+HTML实现“代码雨”类似黑客帝国文字下落效果
Mar 17 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
PL-880隐藏功能
2021/03/01 无线电
对PHP PDO的一些认识小结
2015/01/23 PHP
基于JQuery+PHP编写砸金蛋中奖程序
2015/09/08 PHP
浅谈php的TS和NTS的区别
2019/03/13 PHP
php多进程中的阻塞与非阻塞操作实例分析
2020/03/04 PHP
一实用的实现table排序的Javascript类库
2007/09/12 Javascript
GWT中复制到剪贴板 js+flash实现复制 兼容性比较好
2010/03/07 Javascript
jQuery.extend 函数详解
2012/02/03 Javascript
ASP.NET jQuery 实例12 通过使用jQuery validation插件简单实现用户注册页面验证功能
2012/02/03 Javascript
JQuery在页面中添加和除移DOM示例代码
2013/06/24 Javascript
jQuery图片轮播的具体实现
2013/09/11 Javascript
一个网页标题title的闪动提示效果实现思路
2014/03/22 Javascript
js改变鼠标的形状和样式的方法
2014/03/31 Javascript
JavaScript获取当前网页标题(title)的方法
2015/04/03 Javascript
jQuery焦点图切换特效代码分享
2015/09/15 Javascript
JS实现浏览器状态栏文字从右向左弹出效果代码
2015/10/27 Javascript
JavaScript简单实现弹出拖拽窗口(二)
2016/06/17 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
2016/10/14 Javascript
import与export在node.js中的使用详解
2017/09/28 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
vue 登录滑动验证实现代码
2018/08/24 Javascript
微信小程序动态增加按钮组件
2018/09/14 Javascript
详解小程序横屏方案对比
2020/06/28 Javascript
[50:58]2018DOTA2亚洲邀请赛3月29日 小组赛A组OpTic VS Newbee
2018/03/30 DOTA
[53:15]2018DOTA2亚洲邀请赛3月29日 小组赛A组 KG VS OG
2018/03/30 DOTA
Python中使用插入排序算法的简单分析与代码示例
2016/05/04 Python
怎样使用Python脚本日志功能
2016/08/14 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
浅谈python常用程序算法
2019/03/22 Python
解决Python3下map函数的显示问题
2019/12/04 Python
销售代表求职自荐信
2013/10/01 职场文书
英语专业个人求职信范文
2014/02/01 职场文书
违纪检讨书2000字
2014/02/08 职场文书
专业见习报告范文
2014/11/03 职场文书
入党申请书格式
2019/06/20 职场文书
深入解析Apache Hudi内核文件标记机制
2022/03/31 Servers