ES入门笔一
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入门笔一的更多相关文章
- ES 入门之一 安装ElasticSearcha
安装ElasticSearcha 学习ES也有快一个月了,但是学习的时候一直没有总结.以前没有总结是因为感觉不会的很多,现在对ES有一点了解了.索性就从头从安装到使用ES做一个详细的总结,也分享给其他 ...
- ES 入门记录之 match和term查询的区别
ElasticSearch 系列文章 1 ES 入门之一 安装ElasticSearcha 2 ES 记录之如何创建一个索引映射 3 ElasticSearch 学习记录之Text keyword 两 ...
- OpenGL ES入门09-GLSL实现常见特效 [转]
本文转自简书,原文地址http://www.jianshu.com/p/e4a8c83cd37 本文是关于OpenGL ES的系统性学习过程,记录了自己在学习OpenGL ES时的收获. 这篇文章的目 ...
- ES入门三部曲:索引操作,映射操作,文档操作
ES入门三部曲:索引操作,映射操作,文档操作 一.索引操作 1.创建索引库 #语法 PUT /索引名称 { "settings": { "属性名": " ...
- OpenGL ES入门详解
http://blog.csdn.net/wangyuchun_799/article/details/7736928 1.决定你要支持的OpenGL ES的版本.目前,OpenGL ES包含1.1 ...
- OpenGL ES 入门
写在前面 记录一下 OpenGL ES Android 开发的入门教程.逻辑性可能不那么强,想到哪写到哪.也可能自己的一些理解有误. 参考资料: LearnOpenGL CN Android官方文档 ...
- ES 入门 - 基于词项的查询
准备 首先先声明下,我这里使用的 ES 版本 5.2.0. 为了便于理解,这里以如下 index 为格式,该格式是通过 PMACCT 抓取的 netflow 流量信息, 文中所涉及的到的例子,全基于此 ...
- IOS 中openGL使用教程2(openGL ES 入门篇 | 绘制一个多边形)
在上一篇我们学习了如何搭建IOS下openGL的开发环境,接下来我们来学习如何绘制一个多边形. 在2.0之前,es的渲染采用的是固定管线,何为固定管线,就是一套固定的模板流程,局部坐标变换 -> ...
- IOS 中openGL使用教程1(openGL ES 入门篇 | 搭建openGL环境)
OpenGL版本 iOS系统默认支持OpenGl ES1.0.ES2.0以及ES3.0 3个版本,三者之间并不是简单的版本升级,设计理念甚至完全不同,在开发OpenGL项目前,需要根据业务需求选择合适 ...
随机推荐
- Jeff Atwood质疑iPhone的单键设计
我喜欢使用iPhone,但我对它的一个设计不敢苟同:苹果始终坚持,设备的正面永远只能有一个按键. 我还买了一个Kindle Fire,它更离谱,一个按键都没有!我完全赞成,任何小器具的正面都应该在明显 ...
- Socket编程实践(11) --epoll原理与封装
常用模型的特点 Linux 下设计并发网络程序,有典型的Apache模型(Process Per Connection,PPC), TPC(Thread Per Connection)模型,以及 se ...
- 【shell脚本练习】判断用户存在和用户类型
题目 写一个脚本 1. 传递一个参数给脚本,此参数为用户名: 2. 如果用户存在,则执行如下任务 * 如果用户的id号小于500,显示其为管理员或系统用户: * 否则,显示其为普通用户: 3. 如果用 ...
- JAVA应用程序转换为Applet
本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/41673295 将一个图形的JAVA应用程序转换为能够嵌入在 ...
- SQL2008数据表空间大小查询脚本
--尽量少用触发器,否则数据库增长很快,特别是关于登陆的数据表字段不要用出发器,一周左右能使得数据库增长1G的空间. --数据库表空间大小查询脚本 IF EXISTS (SELECT * FROM ...
- OC中的类别Category-协议Protocol-…
类别(category)--通过使用类别,我们可以动态地为现有的类添加新方法,而且可以将类定义模块化地分不到多个相关文件中.通常只在类别中定义方法. 类别,接口部分的定义,通常该文件命名为已有&quo ...
- Linux0.11启动过程
从开机加电,到执行main函数之前的过程 好吧,这里应该是有执行3个汇编的文件,但是我不太了解.囧 从main函数,到启动OK(即可以响应用户操作了) 这个步骤做了3件事情: 创建进程0,使之具备在主 ...
- AngularJS进阶(三十五)浏览器兼容性解决之道
浏览器兼容性解决之道 前言 浏览器兼容性一直是前端开发中不得不面对的一个问题.而最突出的就是IE.对绝大多数公司来说,兼容IE6的性价比已经很低,而IE7则几乎已经绝迹.所以,常见的兼容性下限是IE8 ...
- 使用MTL库求解最小二乘解
最小二乘计算最优解不管是哪个行业肯定都用到的非常多.对于遥感图像处理中,尤其是对图像进行校正处理,关于控制点的几种校正模型中,都用到最小二乘来计算模型的系数.比如几何多项式,或者通过GCP求解RPC系 ...
- apache tomcat集群
今天花了大概两个小时完成了tomcat与apache的集群.现记录一下,也希望能帮助后来者. 建议看这篇博客前,先阅读一下鄙人拙作 tomcat整合apache 看完那个后,再进行集群,就很快了. 和 ...