基于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 相关文章推荐
怎么选择Javascript框架(Javascript Framework)
Nov 22 Javascript
jQuery获得document和window对象宽度和高度的方法
Mar 25 Javascript
Jquery实现textarea根据文本内容自适应高度
Apr 03 Javascript
jQuery实现的在线答题功能
Apr 12 Javascript
javascript如何写热点图
Dec 08 Javascript
封装获取dom元素的简单实例
Jul 08 Javascript
jquery仿微信聊天界面
May 06 jQuery
Bootstrap Table使用整理(一)
Jun 09 Javascript
浅谈vue+webpack项目调试方法步骤
Sep 11 Javascript
Vue实现点击后文字变色切换方法
Feb 11 Javascript
VUE 直接通过JS 修改html对象的值导致没有更新到数据中解决方法分析
Dec 02 Javascript
maptalks+three.js+vue webpack实现二维地图上贴三维模型操作
Aug 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
PHP编程中八种常见的文件操作方式
2006/11/19 PHP
PHP XML操作的各种方法解析(比较详细)
2010/06/17 PHP
ThinkPHP验证码和分页实例教程
2014/08/22 PHP
php中动态调用函数的方法
2015/03/16 PHP
Apache+PHP+MySQL搭建PHP开发环境图文教程
2020/08/06 PHP
Javascript this 的一些学习总结
2012/08/31 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
JavaScript实现文字与图片拖拽效果的方法
2015/02/16 Javascript
jquery实现用户打分评分特效
2015/05/28 Javascript
js实现文本框输入文字个数限制代码
2015/12/25 Javascript
基于jQuery日历插件制作日历
2016/03/11 Javascript
jQuery实现响应鼠标事件的图片透明效果【附demo源码下载】
2016/06/16 Javascript
jQuery实现鼠标经过购物车出现下拉框代码(推荐)
2016/07/21 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
js 用于检测类数组对象的函数方法
2017/05/02 Javascript
vue+vuecli+webpack中使用mockjs模拟后端数据的示例
2017/10/24 Javascript
超详细的5个Shell脚本实例分享(值得收藏)
2019/08/15 Javascript
vue实现广告栏上下滚动效果
2020/11/26 Vue.js
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
Python实现将目录中TXT合并成一个大TXT文件的方法
2015/07/15 Python
Python字符串特性及常用字符串方法的简单笔记
2016/01/04 Python
Python 递归函数详解及实例
2016/12/27 Python
Python时间的精准正则匹配方法分析
2017/08/17 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
python3 实现的对象与json相互转换操作示例
2019/08/17 Python
python是否适合网页编程详解
2019/10/04 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
python实现的Iou与Giou代码
2020/01/18 Python
Python使用20行代码实现微信聊天机器人
2020/06/05 Python
python的数学算法函数及公式用法
2020/11/18 Python
物业经理自我鉴定
2014/03/03 职场文书
迟到检讨书2000字(精选篇)
2014/10/07 职场文书
Django debug为True时,css加载失败的解决方案
2021/04/24 Python
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS
搭建Yolov5服务器
2022/04/30 Servers
pd.DataFrame中的几种索引变换的实现
2022/06/16 Python