ES6一共有6种声明变量的方法

  --ES5只有var 和 function

  --ES6新增了let、const、import和class四种

ES6新增let和const,用来声明变量,是对var的扩展。
let基本用法
  -let声明的变量只在let命令所在的代码块内有效
  -for循环很适合let命令
  -不存在变量提升,必须先声明再使用

    --主要减少运行时错误,防止出现意料之外的bug
  -暂时性死区

    --块级作用域内存在let命令,它所声明的变量就绑定这个区域,不会再受外部的影响

    --导致typeof不再是十分安全的操作

  -不允许重复声明

    --咱相同的作用域内,不允许重复声明用一个变量

块级作用域

  -为什么需要块级作用域?

    --因为原本ES只有全局作用域和函数作用域,没有块级作用域,带来很多不合理的场景

      ---变量提升,导致变量覆盖

      ---循环结束后,变量并没有消失,造成全局变量泄漏

ES6的块级作用域

  -let为js增加了块级作用域

  -ES6允许块级作用域任意嵌套

    --外层作用域无法读取内层作用域的变量

    --内层作用域可以定义外层作用域的同名变量

    --块级作用域的出现,使得立即执行函数不再必要了

块级作用域与函数声明

  -ES5规定 > 函数只能在顶层作用域和函数作用域中声明,不能在块级作用域声明

    --严格模式下浏览器才能遵守这个规定

     

  -ES6引入块级作用域,明确允许在块级作用域中声明函数

    --块级作用域中声明的函数在块级作用域之外不可以引用

  -由于运行环境差异太大,应避免在块级作用域内声明函数,若需要,可使用函数表达式而不是函数声明语句

const命令

  -const声明一个只读的常量,一旦声明,便不可改变

    --由于const声明之后不可改变,所以const一旦声明就必须初始化

    --const作用域与let相同 > 只在声明所在的块级作用域内有效

    --const声明的常量也不会声明提升,同样存在暂时性死区,一样不可重复声明

总结:

  -如果区块中存在let和const命令,这个区块对这些指令声明的变量,一开始就会形成封闭作用域

    --因此在此声明之前使用这些变量就会报错,一定要先声明再使用

---------------------------------------------------------------------------------

数组的解构赋值

  -ES6允许按照一定的模式,从数组和对象中提取值,对变量进行赋值 >> 称为解构

  

    --这种写法在本质上属于"模式匹配",只要等号两边的模式相同,左边的变量就会被赋予对应的值

    --若是解构不匹配,变量找不到相对应的值,那么其的值就等于undefined

  -如果等号右边不是数组,即不是可遍历的结构,那么解构将会报错

    --转换为对象以后也不具备可遍历的结构

    --本身就不具备可遍历的结构

  -解构赋值适用于var、let、const以及set结构

    -只要某种数据结构具有可遍历的结构,都可以采用数组的形式的结构赋值

  -解构赋值允许指定默认值

    

      --默认值生效 > 对象的属性值严格等于undefined

   -结构赋值实质是为变量赋值,而不是为模式(属性)赋值

解构赋值用途

  -交换变量的值

    

  -从函数返回多个值

    --函数只能返回一个值,如果要返回多个值,只能将他们放在对象或数组里返回,有了解构赋值,取值就会非常方便

      

  -函数参数的定义

    --解构赋值可以方便的将一组参数与变量名对应

      

  -提取JSON数据

    --结构赋值对提取JSON对象中的数据,尤其有用

     

  -函数参数的默认值

    --指定参数的默认值,避免在函数体内写逻辑判断语句

ES入门笔一的更多相关文章

  1. ES 入门之一 安装ElasticSearcha

    安装ElasticSearcha 学习ES也有快一个月了,但是学习的时候一直没有总结.以前没有总结是因为感觉不会的很多,现在对ES有一点了解了.索性就从头从安装到使用ES做一个详细的总结,也分享给其他 ...

  2. ES 入门记录之 match和term查询的区别

    ElasticSearch 系列文章 1 ES 入门之一 安装ElasticSearcha 2 ES 记录之如何创建一个索引映射 3 ElasticSearch 学习记录之Text keyword 两 ...

  3. OpenGL ES入门09-GLSL实现常见特效 [转]

    本文转自简书,原文地址http://www.jianshu.com/p/e4a8c83cd37 本文是关于OpenGL ES的系统性学习过程,记录了自己在学习OpenGL ES时的收获. 这篇文章的目 ...

  4. ES入门三部曲:索引操作,映射操作,文档操作

    ES入门三部曲:索引操作,映射操作,文档操作 一.索引操作 1.创建索引库 #语法 PUT /索引名称 { "settings": { "属性名": " ...

  5. OpenGL ES入门详解

     http://blog.csdn.net/wangyuchun_799/article/details/7736928 1.决定你要支持的OpenGL ES的版本.目前,OpenGL ES包含1.1 ...

  6. OpenGL ES 入门

    写在前面 记录一下 OpenGL ES Android 开发的入门教程.逻辑性可能不那么强,想到哪写到哪.也可能自己的一些理解有误. 参考资料: LearnOpenGL CN Android官方文档 ...

  7. ES 入门 - 基于词项的查询

    准备 首先先声明下,我这里使用的 ES 版本 5.2.0. 为了便于理解,这里以如下 index 为格式,该格式是通过 PMACCT 抓取的 netflow 流量信息, 文中所涉及的到的例子,全基于此 ...

  8. IOS 中openGL使用教程2(openGL ES 入门篇 | 绘制一个多边形)

    在上一篇我们学习了如何搭建IOS下openGL的开发环境,接下来我们来学习如何绘制一个多边形. 在2.0之前,es的渲染采用的是固定管线,何为固定管线,就是一套固定的模板流程,局部坐标变换 -> ...

  9. IOS 中openGL使用教程1(openGL ES 入门篇 | 搭建openGL环境)

    OpenGL版本 iOS系统默认支持OpenGl ES1.0.ES2.0以及ES3.0 3个版本,三者之间并不是简单的版本升级,设计理念甚至完全不同,在开发OpenGL项目前,需要根据业务需求选择合适 ...

随机推荐

  1. 【FPGA学习】Verilog之加法器

    在fpga工程应用设计中,随处可见加法器,乘法器等等.现在将一些常用模块和心得体会先记录下来,以便日后使用. 一位半加器: module halfadder(cout,sum,a,b); output ...

  2. go-mysql,一个易用的mysql接口框架实现

    介绍 go-mysql是一个用go写的mysql driver,使用接口类似于go自身的database sql,但是稍微有一点不同,现阶段还不支持集成进go database/sql中,但实现难度并 ...

  3. Leetcode_20_Valid Parentheses

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41450987 通过本文你能学到如下知识: (1)对数据结构 ...

  4. naoting

    生活就像一锅菠菜汤 20160714 夜

  5. ISLR系列:(3)重采样方法 Cross-Validation & Bootstrap

    Resampling Methods 此博文是 An Introduction to Statistical Learning with Applications in R 的系列读书笔记,作为本人的 ...

  6. 21_Android中常见对话框,光传感器,通过重力感应器编写出指南针应用,帧动画,通过Jav代码的方式编写补间动画,通过XML的方式编写补间动画

     1 关于常见的对话框,主要有: 常见的对话框,单选对话框,多选对话框,进度条对话框(转圈类型的),带进度条的对话框. 案例结构: 完成如下结构的案例,将所有的案例都测试一下: 2 编写MainA ...

  7. UGUI实现NGUI的UIEventListener功能

    在unity中处理UI事件时,习惯了使用NGUI的UIEventListener,虽然UGUI也有AddListener,但是一个组件只能对应一个函数,不能在一个函数中同时处理多个事件,显得有些麻烦 ...

  8. hive发杂数据结构的使用,struct,array,map

    一个简单介绍http://jimi68.iteye.com/blog/980573 一般的复杂介绍:http://songpo-ath-taobao-com.iteye.com/blog/140513 ...

  9. Xcode中的调试工具栏简介

    如下图所示: 从左至右,第一个按钮用来隐藏调试区域. 第二个按钮向你展示断点是否被全局开启或禁用.如果它不是高亮蓝色,则没有断点会被触发. 第三个按钮暂停或继续程序的执行,你一般点击它继续运行到程序的 ...

  10. JSP判断移动设备

    日期: 2014年3月6日 人员::铁锚 看到了一篇很好的文章, <在天猫,前端做什么?>,里面有天猫php判断移动设备的正则(个人猜测),觉得很好用,于是就决定移植到JSP里面. jsp ...