es是js的规范,而js是具体实现
将es6转化为es5代码工具:运用的多的是babel
在线转换地址:babeltraceur(属于谷歌)
 
1.let申明变量:let其实可以完全取代var,并且没有var这么多副作用
 {
var a = 10;
let b = 10;//let申明的变量是块级作用域
}
console.log(a)//
// console.log(b)//b is not defined
let很适合的一种场景是:for
 for (let i = 0; i < 3; i++) {
console.log(i)
}
for (var j = 0; j < 3; j++) {
console.log(j)
}
// console.log(i)//i is not defined
console.log(j)//

看下面这种情况:

 var k = []
for (var i1 = 0; i1 < 5; i1++) {//var i1,申明了全局变量i1,只存在一个i1;即每次循环的i1指向的都是同一个i1
k[i1] = function () {
console.log(i1);
}
}
k[3]();// var p = []
for (let i2 = 0; i2 < 5; i2++) {//let i2,申明变量i2,只在块级作用域有效;即每次循环的i2都是新的、重新申明的变量(同时js引擎内部可以记住上一次循环的值)
p[i2] = function () {
console.log(i2)
}
}
p[3]()//

注意下面这种情况:

 for(let i3=0;i3<3;i3++){//圆括号里面是一个作用域
let i3=10//花括号里面又是一个作用域
console.log(i3)
}
//输出:10 10 10
let不存在变量提升(对比var变量提升)
 console.log(i4)//i4 is not defined
let i4=10
console.log(i5) //undefined 未赋值
var i5=100
暂时性死区:在es6中,如果区块中存在let和const命令申明的变量,这个区块就对变量形成封闭作用域。即暂时性死区(temporal dead zone,简称TDZ)
 var people=100
if(true){
//TDZ开始
// console.log(people)//people is not defined
let people=1000//TDZ结束
console.log(people)
}
暂时性死区本质:进入区块,只有let申明变量后,才能进行访问
 
let不允许在相同作用域下重复申明变量
 function test(){
let a=10;
// var a=100
let a=1000
}
test()//报错,a已被申明
块级作用域的出现使得IIFE不再必要了;块级作用域外部不能访问块级作用域中的let申明的变量;借助花括号(可以嵌套多个),块级作用域的写法:
 {
let a100=100
}
console.log(a100)//报错

const:const申明只读的常量;申明时必须同时赋值,否则报错;同理,const与let一样都是块级作用域范围

实质上:const是保证变量指向的内存地址不得改动。对于简单类型(数值,字符串,布尔值),表现为值不能改变;而对于复合类型(数组,对象),不变的是内存地址,指向的数据结构可能会变动
 const PI=3.14
console.log(PI) // const AB//报错,必须申明时同时赋值
// AB=1 const ABC=[]
ABC[0]='hello'
ABC[1]='hi'
console.log(ABC)
// ABC={}//这时报错

同时:ES6中,let,const,class申明的变量不再是顶层对象的属性;而var ,function申明的依然是顶层对象的属性(为了保持兼容性)

 console.log(window.PI)//undefined;PI是上面代码中由const申明的常量

参考:更多详情请点击阮一峰前辈的ECMAScript 6 入门

es6(一):es6介绍以及let,const的更多相关文章

  1. JavaScript学习系列5 ---ES6中的var, let 和const

    我们都知道JavaScript中的var,在本系列的 JavaScript学习系列2一JavaScript中的变量作用域 中,我们详细阐述了var声明的变量的作用域 文章中提到,JavaScript中 ...

  2. ES6中不得不说的关键字const

    上一节讲了let关键字,它是用来声明一个变量,只在块级作用域起作用.这一节我们来学习ES6新增的另一个关键字const. const 的作用 const是constant(常量)的缩写,const和 ...

  3. ES6新增语法(一)——let、const、var的区别

    ES6简介 ES6是ECMAScript 6.0的简称,是javascript语言的下一代标准,已经在2015年6月正式发布上线.目的就是为了统一javascript的语法标准,可以用来开发大型应用程 ...

  4. Vue.js源码中大量采用的ES6新特性介绍:模块、let、const

    1 关于ES6      ECMAScript6(以下简称ES6)是JavaScript语言的最新一代标准,发布于2015年6月,因为ECMA委员会决定从ES6起每年更新一次标准,因此ES6被改名为E ...

  5. JavaScript ES6新特性介绍

    介绍 ES6:ECMScript6 首先,一个常见的问题是,ECMAScript 和 JavaScript 到底是什么关系? ECMAScript是一个国际通过的标准化脚本语言: JavaScript ...

  6. es6学习笔记1 --let以及const

    let语句的基本用法:  1.let声明的变量为块级作用域,只在最近的{}里面有效,如果在外部引用就会报错. { let a = 10; var b = "hello" } ale ...

  7. ES6新特性:let和const的使用

    (声明, 本文的所有代码均在node的最新稳定版本v4.4.3中执行的, 如果在浏览器中执行请把JS的运行环境提升为ES6) 以前一直用var定义变量, 现在有了两种新的定义变量的方式, 1: let ...

  8. es6重点笔记:let,const

    一,let 先看代码: var a = []; for (var i = 0; i < 10; i++) { a[i] = function () { console.log(i) }; } a ...

  9. ES6系列之变量声明let const

    ES6也出来好久了,最近闲来无事就想着吧es6做一个系统的总结,巩固自己的知识,丰富一下博客. 为什么叫ES6 实际上是ECMA的一个打的标准,这个标准是在2015年6月发布的,正式的名字实际是es2 ...

随机推荐

  1. 最简单的基于FFmpeg的AVDevice例子(屏幕录制)

    =====================================================最简单的基于FFmpeg的AVDevice例子文章列表: 最简单的基于FFmpeg的AVDev ...

  2. Swing中经常会遇到的若干问题——JTable(持续更新)

    本文是在学习中的总结,欢迎转载但请注明出处:http://blog.csdn.net/pistolove/article/details/40955213 (1)让组件在屏幕中央显示 public s ...

  3. C++ Primer 有感(重载操作符)

    1.用于内置类型的操作符,其含义不能改变.也不能为任何内置类型定义额外的新的操作符.(重载操作符必须具有至少一个类类型或枚举类型的操作数.这条规则强制重载操作符不能重新定义用于内置类型对象的操作符的含 ...

  4. kafka原理简介并且与RabbitMQ的选择

    kafka原理简介并且与RabbitMQ的选择 kafka原理简介,rabbitMQ介绍,大致说一下区别 Kafka是由LinkedIn开发的一个分布式的消息系统,使用Scala编写,它以可水平扩展和 ...

  5. NDK开发环境安装,CDT安装,Cygwin安装

     1.为eclipse增加c和c++的开发插件 Help中的install new software 选择 Helios-http://download.eclipse.org/release/h ...

  6. Java进阶(十一)部分数据类型取值范围

    java整型byte,short,int,long取值范围大小 在项目开发中,需要用到随机数的生成方法,代码如下: public static String randomizeNumber(int n ...

  7. Java集合之WeakHashMap

    纸上得来终觉浅,绝知此事要躬行  --陆游    问渠那得清如许,为有源头活水来  --朱熹 WeakHashMap继承于AbstractMap,同时实现了Map接口. 和HashMap一样,Weak ...

  8. Mac OS X 10.8.4下面XZ Utils(*.tar.xz)压缩解压缩命令工具的安装

    主要参考:http://bbs.chinaunix.net/thread-3610738-1-1.html 现在很多找到的软件都是tar.xz的格式的,xz 是一个使用 LZMA压缩算法的无损数据压缩 ...

  9. nodejs书籍

    http://product.dangdang.com/23371791.html#catalog https://www.byvoid.com/project/node http://www.ama ...

  10. 俺的新书《Sencha Touch实战》终于出版了

    内容简介:Sencha框架是第一个基于HTML 5的移动也能给予框架,可以让Web应用看起来像网络应用.美丽的用户 界面 组件和丰富的数据管理,全部基于最新的HTML 5和CSS 3的Web标准,全部 ...