基于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 构造函数强制调用经验总结
Dec 02 Javascript
百度判断手机终端并自动跳转js代码及使用实例
Jun 11 Javascript
node.js中的console.timeEnd方法使用说明
Dec 09 Javascript
JS实现控制表格行文本对齐的方法
Mar 30 Javascript
JavaScript数据类型之基本类型和引用类型的值
Apr 01 Javascript
JS获取当前页面名称的简单实例
Aug 19 Javascript
JS实现css hover操作的方法示例
Apr 07 Javascript
webpack配置的最佳实践分享
Apr 21 Javascript
Vue 进入/离开动画效果
Dec 26 Javascript
vue.js 微信支付前端代码分享
Feb 10 Javascript
JavaScript实现的简单Tab点击切换功能示例
Jul 06 Javascript
layui给下拉框、按钮状态、时间赋初始值的方法
Sep 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
世界咖啡生产者论坛呼吁:需要立即就咖啡价格采取认真行动
2021/03/06 咖啡文化
第一节--面向对象编程
2006/11/16 PHP
PHP中使用localhost连接Mysql不成功的解决方法
2014/08/20 PHP
ThinkPHP中使用ajax接收json数据的方法
2014/12/18 PHP
CI框架的安全性分析
2016/05/18 PHP
js直接编辑当前cookie的脚本
2008/09/14 Javascript
jQuery live( type, fn ) 委派事件实现
2009/10/11 Javascript
js设置组合快捷键/tabindex功能的方法
2013/11/21 Javascript
引用外部脚本时script标签关闭的写法
2014/01/20 Javascript
jQuery多个input求和的实现方法
2015/02/12 Javascript
javascript实现控制浏览器全屏
2015/03/30 Javascript
BootStrap Validator使用注意事项(必看篇)
2016/09/28 Javascript
jquery网页日历显示控件calendar3.1使用详解
2016/11/24 Javascript
Bootstrap的Carousel配合dropload.js实现移动端滑动切换图片
2017/03/10 Javascript
HTML5+Canvas调用手机拍照功能实现图片上传(下)
2017/04/21 Javascript
layui table设置某一行的字体颜色方法
2019/09/05 Javascript
vue 百度地图(vue-baidu-map)绘制方向箭头折线实例代码详解
2020/04/28 Javascript
jquery实现鼠标悬浮弹出气泡提示框
2020/12/23 jQuery
python实现文件分组复制到不同目录的例子
2014/06/04 Python
Python编程使用NLTK进行自然语言处理详解
2017/11/16 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
python tkinter库实现气泡屏保和锁屏
2019/07/29 Python
python中的列表与元组的使用
2019/08/08 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
Python单元测试及unittest框架用法实例解析
2020/07/09 Python
用python实现前向分词最大匹配算法的示例代码
2020/08/06 Python
Python自动化测试基础必备知识点总结
2021/02/07 Python
机械绘图员岗位职责
2013/11/19 职场文书
校园门卫岗位职责
2013/12/09 职场文书
学年末自我鉴定
2014/01/21 职场文书
考博专家推荐信
2014/05/10 职场文书
婚内房产协议书范本
2014/10/02 职场文书
如何制定一份可行的计划!
2019/06/21 职场文书
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL
mysql创建存储过程及函数详解
2021/12/04 MySQL
MySQL 执行数据库更新update操作的时候数据库卡死了
2022/05/02 MySQL