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 命令声明的常量也是不提升,同样存在暂时性死区,只能在声明的位置后面使用。
网友评论