基于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实现代码[IE暂不支持]
May 24 Javascript
jQuery contains过滤器实现精确匹配使用方法
Apr 12 Javascript
JavaScript解析URL参数示例代码
Aug 12 Javascript
js中cookie的添加、取值、删除示例代码
Oct 21 Javascript
在jquery中combobox多选的不兼容问题总结
Dec 24 Javascript
js中document.write使用过程中的一点疑问解答
Mar 20 Javascript
利用JavaScript检测CPU使用率自己写的
Mar 22 Javascript
jQuery使用empty()方法删除元素及其所有子元素的方法
Mar 26 Javascript
JavaScript之数组(Array)详解
Apr 01 Javascript
整理Javascript基础入门学习笔记
Nov 29 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
May 11 Javascript
vuejs+element UI点击编辑表格某一行时获取内容填入表单的示例
Oct 31 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 修改、增加xml结点属性的实现代码
2013/10/22 PHP
注释PHP和html混合代码的小技巧(分享)
2016/11/03 PHP
PHP实现腾讯短网址生成api接口实例
2020/12/08 PHP
javascript游戏开发之《三国志曹操传》零部件开发(三)情景对话中仿打字机输出文字
2013/01/23 Javascript
Js点击弹出下拉菜单效果实例
2013/08/12 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
jQuery简单实现日历的方法
2015/05/04 Javascript
javascript实现自动输出文本(打字特效)
2015/08/27 Javascript
javascript作用域、作用域链(菜鸟必看)
2016/06/16 Javascript
JS阻止事件冒泡行为和闭包的方法
2016/06/16 Javascript
微信小程序 表单Form实例详解(附源码)
2016/12/22 Javascript
使用express+multer实现node中的图片上传功能
2018/02/02 Javascript
Vue的土著指令和自定义指令实例详解
2018/02/04 Javascript
elementUI select组件value值注意事项详解
2019/05/29 Javascript
前端Vue项目详解--初始化及导航栏
2019/06/24 Javascript
详解Vue中的Props与Data细微差别
2020/03/02 Javascript
javascript设计模式 ? 观察者模式原理与用法实例分析
2020/04/22 Javascript
Vue两种组件类型:递归组件和动态组件的用法
2020/08/06 Javascript
Antd表格滚动 宽度自适应 不换行的实例
2020/10/27 Javascript
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
Python获取暗黑破坏神3战网前1000命位玩家的英雄技能统计
2016/07/04 Python
Mac 使用python3的matplot画图不显示的解决
2019/11/23 Python
python asyncio 协程库的使用
2021/01/21 Python
关于webview适配H5上传照片或者视频文件的方法
2020/11/04 HTML / CSS
某公司C#程序员面试题笔试题
2014/05/26 面试题
优秀教师先进事迹
2014/01/22 职场文书
学习雷锋精神心得体会范文
2014/03/12 职场文书
竞争上岗实施方案
2014/03/21 职场文书
项目经理聘任书
2014/03/29 职场文书
总经理人事任命书
2014/06/05 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
2014高三学生考试作弊检讨书
2014/12/14 职场文书
三八妇女节致辞
2015/07/31 职场文书
科级干部培训心得体会
2016/01/06 职场文书
MATLAB 全景图切割及盒图显示的实现步骤
2021/05/14 Python