ES6也出来好久了,最近闲来无事就想着吧es6做一个系统的总结,巩固自己的知识,丰富一下博客.

为什么叫ES6

  实际上是ECMA的一个打的标准,这个标准是在2015年6月发布的,正式的名字实际是es2015,ecma这个组织规定每年6月份对这个版本进行更新,所以有es2016,es2017,es2018,有的人也称其为es7 es8,当然es6较之前的es5确实做了非常大的更新,对我们开发这也是非常友好

变量的声明

  废话不多扯,进入正题,

//之前的变量声明是js的var声明列如
var a=1

  在es6中推出来let和const这两个声明变量的关键字

  let          相当于之前的var

  const     常量定义好了不能改变

  在之前只有全局作用域和函数作用域,但是在es6有了块级作用域,(只要遇见{}都可以当做块)

  因此,let和const的作用域只是当前的块

  举个列子:

  之前没有块级作用域的时候

  

var a=1
function f(){
if(false){
var a=2
}
console.log(a)
}
f()

  不管最后的if执行不执行最后都会输出undefined因为存在预解析,函数内的a提升到函数顶部,因此输出的事undefined

但是当用let定义就不会出现这个问题

var a=1
function f(){
if(false){
let a=2
}
console.log(a)
}
f()

最后输出的一定是1,

从上边可以看出let没有预解析,不存在变量提升,并且作用域仅仅是当前的块,

再举一个典型的例子

for(var i=0;i<8;i++){
setTimeout(function(){
console.log(i)
},1000)
}

一秒后输出8个8,要解决就得用闭包

但是用let定义之后

for(let i=0;i<8;i++){
setTimeout(function(){
console.log(i)
},1000)
}

用了let之后1秒后输出1,2,3,4,5,6,7,8

还有一个列子

   var arr =[];

       for(var i=0; i<10; i++){
arr[i]=function(){
console.log(i);
}
} arr[5]();//输出的是10
//用let定义之后
for(let i=0; i<10; i++){
arr[i]=function(){
console.log(i);
}
} arr[5]();//输出的是5

 还有一个最典型的列子

有三个按钮点击每个按钮弹出按钮的index

    <input type="button" value="aaa">
<input type="button" value="bbb">
<input type="button" value="ccc">
//js
let aInput = document.querySelectorAll('input');
//用var定义
for(var=0; i<aInput.length; i++){
aInput[i].onclick=function(){
alert(i);
}
}
不管点击哪一个输出的永远是3,相信在实际工作中的都知道这是什么回事,之前解决就是用闭包
但是用es6之后用一个小小的let就解决了
for(let i=0; i<aInput.length; i++){
aInput[i].onclick=function(){
alert(i);
}
}

  

const和let的性质一样 只是const一旦定义不可再更改

比如

const a=1

a=2//Assignment to constant variable.  直接报错

let 和const还有一个特点就是在一个块级作用域内定义的变量不能重列如

let a=1

let a=2   //Identifier 'a' has already been declared

ES6系列之变量声明let const的更多相关文章

  1. Nodejs与ES6系列1:变量声明

    1.声明变量 在JS当中一个变量的作用域(scope)是程序中定义这个变量的区域.变量分为两类,全局(global)的和局部的.其中全局变量的作用域是全局性的,即在JavaScript代码中,它处处都 ...

  2. es6中的变量声明

    目录 es6中的变量声明 变量的声明 es6中的变量声明 变量的声明 for (var i = 0; i < 5; i++) { console.log(i) } var声明 作用域问题 上面的 ...

  3. ES6和ES5变量声明的区别(var let const)

    // es5的语法与es6的语法区别 // var let const console.log(name);//undefine,不会报错,因为变量声明会提到作用域的最前面 var name=&quo ...

  4. ES6学习笔记之变量声明let,const

    最近用淘宝的weex做了个项目,最近稍微闲下来了.正好很久没有接触RN了,所以趁这个机会系统的学习一下ES6的相关知识. 孔子说:没有对比就没有伤害.所以我们要拿ES6和ES5好好对比的学习.这样才能 ...

  5. 变量声明---let,const,解构

    let在很多方面与var是相似的,但是可以帮助大家避免在JavaScript里常见一些问题. const是对let的一个增强,它能阻止对一个变量再次赋值. 块作用域 当用let声明一个变量,它使用的是 ...

  6. ES6的强大变量声明

    ES6是javascript的新特性,今天来说说声明变量 过去我们声明变量,都是一个一个声明,现在有了一种新的声明方式,它可以将一个多个变量同时声明,声明后变量同时存在一个集合中,集合的数据类型是对象 ...

  7. TypeScript 变量声明(二)

    ES6 中,变量声明一共有6种,分别是var.function .let.const.class和import. let 基本语法:let 变量名 :类型.其中类型不是必须的. 1.用于声明变量,其用 ...

  8. es6 快速入门 系列 —— 变量声明:let和const

    其他章节请看: es6 快速入门 系列 变量声明:let和const 试图解决的问题 经典的 var 声明让人迷惑 function demo1(v){ if(v){ var color='red' ...

  9. es6系列-变量声明

    es6系列所有文章都是阅读阮一峰老师的<ES6标准入门>(第2版)所做的读书笔记.方便日后查阅相关基础知识. git地址: https://github.com/rainnaZR/es6- ...

随机推荐

  1. SpringBoot从零单排 ------ 拦截器的使用

    在项目开发中我们常常需要对请求进行验证,如登录校验.权限验证.防止重复提交等等,通过拦截器来过滤请求.自定义一个拦截器需要实现HandlerInterceptor接口.代码如下: import org ...

  2. RabbitMQ死信队列另类用法之复合死信

    前言 在业务开发过程中,我们常常需要做一些定时任务,这些任务一般用来做监控或者清理任务,比如在订单的业务场景中,用户在创建订单后一段时间内,没有完成支付,系统将自动取消该订单,并将库存返回到商品中,又 ...

  3. 设计模式之Singleton模式和Strategy模式是什么

    Singleton模式 单例模式,也交单子模式,有时候系统只需要拥有一个全局对象. 这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建.这个类提供了一种访问其唯一的对象的方 ...

  4. SAP HUM事务代码 HUMAT 之初探

    SAP HUM事务代码 HUMAT 之初探 SAP菜单中,该事务代码在这里: 1)如下的inbound delivery号码, Document flow, 已经完成了PGR, 2)执行HUMAT,进 ...

  5. arcgis api 3.x for js 入门开发系列批量叠加 zip 压缩 SHP 图层优化篇(附源码下载)

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  6. [目录]搭建一个简单的WebGIS应用程序

    “如果一件事情超过自己的能力,自己很难达到,那就像是婴儿跳高,不但没有好处,反而拔苗助长”. 4月份时报名参加了2018年ESRI杯GIS应用开发比赛,到前几天提交了作品.作品很简单,没有那么多复杂深 ...

  7. RxJava操作符的简单使用

    一.准备工作在app的build.gradle文件下的dependencies中添加依赖: compile 'io.reactivex:rxjava:1.3.0' compile 'io.reacti ...

  8. 代码规范:idea上添加阿里巴巴Java开发插件

    在一个项目中,不可缺少的是书写代码的规范,没有好的代码规范约束,大家各写各的,十分不利于代码的维护与修改.     首先来看看如何在idea上添加这个插件: 直接上图 点击右边的蓝色按钮就可以安装了, ...

  9. SQL Server统计信息偏差影响表联结方式案例浅析

      我们知道数据库中的统计信息的准确性是非常重要的.它会影响执行计划.一直想写一篇关于统计信息影响执行计划的相关博客,但是都卡在如何构造一个合适的例子上,所以一直拖着没有写.巧合,最近在生产环境中遇到 ...

  10. java中强大的免费的集成开发环境(IDE)eclipse的使用技巧及注意事项

    1调整字体,window->prefernce->Appereance->colors and fonts->Basic->Text font双击即可进行编辑 2.设置行 ...