基于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的设计模式
Nov 22 Javascript
javascript 面向对象编程基础 多态
Aug 21 Javascript
浅谈Javascript鼠标和滚轮事件
Jun 27 Javascript
使用mini-define实现前端代码的模块化管理
Dec 25 Javascript
javascript常用的方法分享
Jul 01 Javascript
javascript每日必学之继承
Feb 23 Javascript
js原型链与继承解析(初体验)
May 09 Javascript
localStorage实现便签小程序
Nov 28 Javascript
bootstrap paginator分页插件的两种使用方式实例详解
Nov 14 Javascript
JQuery模拟实现网页中自定义鼠标右键菜单功能
Nov 14 jQuery
layui动态渲染生成select的option值方法
Sep 23 Javascript
JSON获取属性值方法代码实例
Jun 30 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/25 PHP
Php 构造函数construct的前下划线是双的_
2009/12/08 PHP
php 中文字符入库或显示乱码问题的解决方法
2010/04/12 PHP
php更新修改excel中的内容实例代码
2014/02/26 PHP
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
Javascript表格翻页效果的具体实现
2013/10/05 Javascript
javascript loadScript异步加载脚本示例讲解
2013/11/14 Javascript
Javascript排序算法之合并排序(归并排序)的2个例子
2014/04/04 Javascript
一个小例子解释如何来阻止Jquery事件冒泡
2014/07/17 Javascript
js css 实现遮罩层覆盖其他页面元素附图
2014/09/22 Javascript
JavaScript 学习笔记之数据类型
2015/01/14 Javascript
js仿百度登录页实现拖动窗口效果
2016/03/11 Javascript
Ionic快速安装教程
2016/06/03 Javascript
前端面试题及答案整理(二)
2016/08/26 Javascript
Bootstrap CDN和本地化环境搭建
2016/10/26 Javascript
AngularJS实现DOM元素的显示与隐藏功能
2016/11/22 Javascript
canvas实现图像放大镜
2017/02/06 Javascript
jQuery多选框选择数量限制方法
2017/02/08 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
Vue制作Todo List网页
2017/04/26 Javascript
vue  directive定义全局和局部指令及指令简写
2018/11/20 Javascript
JavaScript设计模式之观察者模式实例详解
2019/01/16 Javascript
微信小程序实现跳转的几种方式总结(推荐)
2019/04/24 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
Python urlopen 使用小示例
2008/09/06 Python
python3 拼接字符串的7种方法
2018/09/12 Python
Python+Appium实现自动化测试的使用步骤
2020/03/24 Python
关于PySnooper 永远不要使用print进行调试的问题
2021/03/04 Python
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
美国眼镜在线零售商:Dualens
2019/12/07 全球购物
世界上最大的艺术社区:SAA
2020/12/30 全球购物
幼儿园保育员岗位职责
2014/04/13 职场文书
班子四风对照检查材料思想汇报
2014/09/29 职场文书
写给父母的感谢信
2015/01/22 职场文书
劳动合同变更协议书范本
2019/04/18 职场文书