基于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 相关文章推荐
PJ Blog修改-禁止复制的代码和方法
Oct 25 Javascript
jQuery 性能优化指南(2)
May 21 Javascript
jQuery 解析xml文件
Aug 09 Javascript
利用腾讯的ip地址库做ip物理地址定位
Jul 24 Javascript
Javascript中call与apply的学习笔记
Sep 22 Javascript
修改或扩展jQuery原生方法的代码实例
Jan 13 Javascript
js一维数组、多维数组和对象的混合使用方法
Apr 03 Javascript
jQuery控制div实现随滚动条滚动效果
Jun 07 Javascript
微信小程序实现登录注册tab切换效果
Dec 29 Javascript
使用element-ui table expand展开行实现手风琴效果
Mar 15 Javascript
JavaScript进制转换实现方法解析
Jan 18 Javascript
vue 使用饿了么UI仿写teambition的筛选功能
Mar 01 Vue.js
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/06/04 PHP
关于file_get_contents返回为空或函数不可用的解决方案
2013/06/24 PHP
将二维数组转为一维数组的2种方法
2014/05/26 PHP
php实现文章评论系统
2019/02/18 PHP
document.designMode的功能与使用方法介绍
2007/11/22 Javascript
window.open以post方式将内容提交到新窗口
2012/12/26 Javascript
jquery图片放大镜功能的实例代码
2013/03/26 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
js点击更换背景颜色或图片的实例代码
2013/06/25 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
2013/11/28 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
2013/12/13 Javascript
Javascript中对象继承的实现小例
2014/05/12 Javascript
TypeScript Type Innference(类型判断)
2016/03/10 Javascript
js实现密码强度检测【附示例】
2016/03/30 Javascript
JavaScript中的原型继承基础学习教程
2016/05/06 Javascript
Django+Vue.js搭建前后端分离项目的示例
2017/08/07 Javascript
史上最全JavaScript数组去重的十种方法(推荐)
2017/08/17 Javascript
在Mac下彻底卸载node和npm的方法
2018/05/16 Javascript
JavaScript引用类型Function实例详解
2018/08/09 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
vue3为什么要用proxy替代defineProperty
2020/10/19 Javascript
python和C语言混合编程实例
2014/06/04 Python
python 打印直角三角形,等边三角形,菱形,正方形的代码
2017/11/21 Python
Python2.7 实现引入自己写的类方法
2018/04/29 Python
wxPython的安装与使用教程
2018/08/31 Python
Python将json文件写入ES数据库的方法
2019/04/10 Python
Python networkx包的实现
2020/02/14 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
Nike挪威官网:Nike.com (NO)
2018/11/26 全球购物
英国经济型酒店品牌:Travelodge
2019/12/17 全球购物
汽车销售求职自荐信
2013/10/01 职场文书
大学社团活动总结
2014/04/26 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
2014年妇委会工作总结
2014/12/10 职场文书
大学同学聚会感言
2015/07/30 职场文书
党校培训学习心得体会
2016/01/06 职场文书