ECMAscript6——1
1.概述
ECMAScript 6(以下简称ES6)是JavaScript语言的下一代标准,ECMAScript 6的目标,是使得JavaScript可以用来编写复杂的应用程序、函数库和代码的自动生成器(code generator)。
2.使用ECMAscript6的方法
目前,V8引擎已经部署了ECMAscript6的部分特性。使用node.js 0.11版,就可以体验这些特性。node.js 0.11版的一种比较方便的使用方法,是使用版本管理工具nvm。下载nvm后,进入项目目录,运行下面的命令,激活nvm.
source nvm.sh
然后,指定node运行版本
nvm use 0.11
最后,用--harmony参数进入node运行环境,就可以在命令行下体验ECMAscript6了。
node--harmony
另外,可以使用Google的Traceur(在线转换工具),将ES6代码编译为ES5.
安装
npm install -g traceur
运行ES6文件
traceur /path/to/ES6
将ES6文件转为ES5文件
traceur --script /path/to/ES6 --out /path/to/ES5
3.数据类型
(1)let命令
概述:ECMAscript6新增了let命令,用来声明变量。它的用法类似于var,但是所声明的变量,只在let命令所在的代码块内有效。
{
let a = 10;
var b = 1;
}
a // ReferenceError:a is not defined
b // 1
var a = [];
for (var i = 0; i < 10; i++) {
var c = i;
a[i] = function () {
console.log(c);
};
}
a[6]();
如果使用var结果就输出9,使用let结果就输出6.
注意:let不允许在相同作用域内重复声明同一个变量!
(2)块级作用域
let为Javascript新增了块级作用域。
function f1() {
let n = 5;
if (true) {
let n = 10;
}
console.log(n); // 5
}
声明了变量n,运行后输出5。这表示外层代码块不受内层代码块的影响。如果使用var定义变量n,最后输出的值就是10。块级作用域的出现,实际上使得获得广泛应用的立即执行函数(IIFE)不再必要了。
IIFE写法
(function(){
var tmp = ...'
...
}())
块级作用域写法
{
let tmp = ...'
...
}
(3)不存在变量提升
let声明的变量不存在“变量提升”现象。
console.log(x);
let x = 10;
这是会报错的,表示没有声明,如果用var声明x,就不会报错,会输出undefined。
(4)const命令
const也用来声明变量,但是声明的是常量。一旦声明,常量的值就不能改变。
const PI = 3.1415;
PI // 3.1415
PI = 3;
PI // 3.1415
const PI = 3.1;
PI // 3.1415
上面改变常量的值是不起作用的!
注意:对常量重新赋值不会报错,只会失败。