基于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面向对象编程
Mar 02 Javascript
JavaScript 小型打飞机游戏实现原理说明
Oct 28 Javascript
window.onload和$(function(){})的区别介绍
Oct 30 Javascript
javascript类型转换示例
Apr 29 Javascript
node.js中的http.response.end方法使用说明
Dec 14 Javascript
浅谈JavaScript Date日期和时间对象
Dec 29 Javascript
《JavaScript函数式编程》读后感
Aug 07 Javascript
javascript css红色经典选项卡效果实现代码
May 17 Javascript
Javascript对象字面量的理解
Jun 22 Javascript
AngularJs导出数据到Excel的示例代码
Aug 11 Javascript
Angular将填入表单的数据渲染到表格的方法
Sep 22 Javascript
vue项目中实现图片预览的公用组件功能
Oct 26 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/04/21 PHP
PHP输入流php://input介绍
2012/09/18 PHP
Laravel实现用户注册和登录
2015/01/23 PHP
php简单图像创建入门实例
2015/06/10 PHP
php实现的单一入口应用程序实例分析
2015/09/23 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
php实现微信企业转账功能
2018/10/02 PHP
用javascript实现自定义标签
2007/05/08 Javascript
Javascript 复制数组实现代码
2009/11/26 Javascript
jquery 日期分离成年月日的代码
2010/05/14 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
jQueryMobile之Helloworld与页面切换的方法
2015/02/04 Javascript
JavaScript数据结构和算法之图和图算法
2015/02/11 Javascript
Bootstrap实现下拉菜单效果
2016/04/29 Javascript
jQuery弹出窗口打开链接的实现代码
2016/12/24 Javascript
Boostrap栅格系统与自己额外定义的媒体查询的冲突问题
2017/02/19 Javascript
JavaScript函数参数的传递方式详解
2017/03/06 Javascript
react 父组件与子组件之间的值传递的方法
2017/09/14 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
JavaScript实现简单音乐播放器
2020/04/17 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
python合并文本文件示例
2014/02/07 Python
python 读取Linux服务器上的文件方法
2018/12/27 Python
Python 类,property属性(简化属性的操作),@property,property()用法示例
2019/10/12 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
python实现ftp文件传输系统(案例分析)
2020/03/20 Python
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
ivx平台开发之不用代码实现一个九宫格抽奖功能
2021/01/27 HTML / CSS
巴西男士个人护理产品商店:SHOP4MEN
2017/08/07 全球购物
Club Monaco加拿大官网:设计师男女服装
2019/09/29 全球购物
德国大型箱包和皮具商店:Koffer
2019/10/01 全球购物
园林设计专业毕业生求职信
2014/03/23 职场文书
初二学习计划书范文
2014/04/27 职场文书
企业安全标语
2014/06/07 职场文书
宾馆前台接待岗位职责
2015/04/02 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python