015年6月,ECMAScript 6正式通过,成为国际标准。尽管在目前的工作中还没有使用ES6,但是每项新技术出来总是忍不住想尝尝鲜,想知道ES6能为前端开发带来哪些变化?对自己的工作有哪些方面可以提升。刚好看到阮一峰的《ES6标准入门》,便顺着这本书尝试着ES6的各种新特性。
ES6的各种新特性的兼容性查询http://kangax.github.io/compat-table/es6/
尽管我们的浏览器还不一定完全支持ES6代码,我们可以使用Babel转码器,在这里我们使用命令行转码babel-cli,命令行$ npm install --global babel-cli
安装babel-cli
let和const命令
let命令
ES6新增了 let 命令,用来声明变量。它的用法类似于 var ,但是所声明的变量,只在 let 命令所在的代码块内有效。let不像var那样会发生“变量提升”现象。所以,变量一定要在声明后使用,否则报错。
{ let a = 10; var b = 1;}a // ReferenceError: a is not defined.b // 1
ES6明确规定,如果区块中存在 let 和 const 命令,这个区块对这些命令声明的变量,从一开始就形成了封闭作用域。凡是在声明之前就使用这些变量,就会报错。
总之,在代码块内,使用let命令声明变量之前,该变量都是不可用的。这在语法上,称为“暂时性死区”(temporal dead zone,简称TDZ)。
let不允许在相同作用域内,重复声明同一个变量。let 实际上为JavaScript新增了块级作用域。 ES6引入了块级作用域,明确允许在块级作用域之中声明函数。
const命令
const 声明一个只读的常量。一旦声明,常量的值就不能改变。
const 命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。
延伸阅读
- ssh框架 2016-09-30
- 阿里移动安全 [无线安全]玩转无线电——不安全的蓝牙锁 2017-07-26
- 消息队列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 论文笔记【图片目标分割】 2017-07-26
- 词向量-LRWE模型-更好地识别反义词同义词 2017-07-26
- 从栈不平衡问题 理解 calling convention 2017-07-26
- php imagemagick 处理 图片剪切、压缩、合并、插入文本、背景色透明 2017-07-26
- Swift实现JSON转Model - HandyJSON使用讲解 2017-07-26
- 阿里移动安全 Android端恶意锁屏勒索应用分析 2017-07-26
- 集合结合数据结构来看看(二) 2017-07-26