基于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 相关文章推荐
js 鼠标拖动对象 可让任何div实现拖动效果
Nov 09 Javascript
Jquery Ajax请求代码(2)
Jan 07 Javascript
使用js正则控制input标签只允许输入的值
Jul 29 Javascript
appendChild() 或 insertBefore()使用与区别介绍
Oct 11 Javascript
javascript制作的网页侧边弹出框思路及实现代码
May 21 Javascript
详细解读Jquery各Ajax函数($.get(),$.post(),$.ajax(),$.getJSON())
Aug 15 Javascript
JS简单实现仿百度控制台输出信息效果
Sep 04 Javascript
JS中的BOM应用
Feb 02 Javascript
详解Vue项目中出现Loading chunk {n} failed问题的解决方法
Sep 14 Javascript
使用flow来规范javascript的变量类型
Sep 12 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
Sep 26 Javascript
微信小程序实现列表左右滑动
Nov 19 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句法规则详解 入门学习
2011/11/09 PHP
采集邮箱的php代码(抓取网页中的邮箱地址)
2012/07/17 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
PH P5.2至5.5、5.6的新增功能详解
2014/07/14 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
2020/03/29 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
JavaScript 读取元素的CSS信息的代码
2010/02/07 Javascript
jquery 圆形旋转图片滚动切换效果
2011/01/19 Javascript
jquery post方式传递多个参数值后台以数组的方式进行接收
2013/01/11 Javascript
js如何获取file控件的完整路径具体实现代码
2013/05/15 Javascript
jQuery表格排序组件-tablesorter使用示例
2014/05/26 Javascript
用Jquery选择器计算table中的某一列某一行的合计
2014/08/13 Javascript
JavaScript中textRange对象使用方法小结
2015/03/24 Javascript
JavaScript代码实现禁止右键、禁选择、禁粘贴、禁shift、禁ctrl、禁alt
2015/11/17 Javascript
进阶之初探nodeJS
2017/01/24 NodeJs
vue数据双向绑定原理解析(get & set)
2017/03/08 Javascript
浅谈pc端rem字体设置的问题
2017/08/03 Javascript
Echarts动态加载多条折线图的实现代码
2019/05/24 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
[02:42]决战东方!DOTA2亚洲邀请赛重启荣耀之争
2017/03/17 DOTA
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python PIL模块与随机生成中文验证码
2016/02/27 Python
python 获取当天凌晨零点的时间戳方法
2018/05/22 Python
python+logging+yaml实现日志分割
2019/07/22 Python
Django+boostrap 美化admin后台的操作
2020/03/11 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
PyQT5速成教程之Qt Designer介绍与入门
2020/11/02 Python
H5页面适配iPhoneX(就是那么简单)
2019/12/02 HTML / CSS
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
总经理司机岗位职责
2014/02/06 职场文书
国际贸易专业个人职业生涯规划
2014/02/15 职场文书
幼儿园社区活动总结
2014/07/07 职场文书
党员自我评价范文2015
2015/03/03 职场文书
分析mysql中一条SQL查询语句是如何执行的
2021/06/21 MySQL
如何设置多台电脑共享打印机?多台电脑共享打印机的方法
2022/04/08 数码科技