新特性介绍"/>
ECMASCript6 新特性介绍
一、介绍
1.历史
ECMAScript和JavaScript
- ECMAScrip是标准,JavaScript是实现
- 类似于HTML5是标准,IE10、Chrome、FF都是实现
- 换句话说,将来也能有其他XXXScript来实现ECMA
- ECMAScript简称ECMA或ES
- 目前版本
- 低级浏览器主要支持ES 3.1
- 高级浏览器正在从ES 5过渡到ES 6
- ECMAScrip是标准,JavaScript是实现
历史版本
时间 | ECMA | JS | 解释 |
---|---|---|---|
1996.11 | ES 1.0 | JS稳定 | Netscape将JS提交给ECMA组织,ES正式出现 |
1998.06 | ES 2.0 | ES2正式发布 | |
1999.12 | ES 3.0 | ES3被广泛支持 | |
2007.10 | ES 4.0 | ES4过于激进,被废了 | |
2008.07 | ES 3.1 | 4.0退化为严重缩水版的3.1 因为吵得太厉害,所以ES 3.1代号为Harmony(和谐) | |
2009.12 | ES 5.0 | ES 5.0正式发布 同时公布了JavaScript.next也就是后来的ES 6.0 | |
2011.06 | ES 5.1 | ES 5.1成为了ISO国际标准 | |
2013.03 | ES 6.0 | ES 6.0草案定稿 | |
2013.12 | ES 6.0 | ES 6.0草案发布 | |
2015.06 | ES 6.0 | ES 6.0预计发布正式版 JavaScript.next开始指向ES 7.0 |
2.兼容性
1.兼容性
- ES5浏览器兼容性一览表: ES5浏览器支持情况
- ES6浏览器情况。包括:IE10+、Chrome、Firefox、移动端、NodeJS,具体情况为: ES6浏览器支持情况
2.编译与转换,将ES6编译转换成低版本浏览器支持的JS代码
- 在线编译,使用语法解析转换工具将ES6语法解析转换为大部分浏览器识别的ES5语法,通用的转换方案有babel,traceur,jsx,typescript,es6-shim,其中,Bable是比较常用的,参见Bable,可以引入browser.js使浏览器支持Babel;
- 提前编译
2.ES6特性
1.变量
1.var的缺陷
- 可以重复声明,var a =5; var b = 7; var a = 12;
- 无法限制修改,对于某些常量,如PI等可以任意修改;
- 没有块级作用域,var作用于函数,而不是作用于块语句;
2.新的关键字
- let: 不能重复声明,变量可以修改,块级作用域
- const: 不能重复声明,变量不可以修改,块级作用域
var aBtn = document.getElementByTagName('button');
(function(i){for(var i = 0; i < aBtn.length; i++){aBtn.i.onclock = function(){alert(i);
}
})(i)
}
用let不用闭包来解决以上问题:
var aBtn = document.getElementByTagName('button');
for(var let = 0; i < aBtn.length; i++){aBtn.i.onclock = function(){alert(i);}
}
2.函数
1.箭头函数
省略条件
- 如果只有一个参数,()可以省略;
- 如果只有一个return语句,{}可以省略
let show = function(){alert('13')
}
show();
let show = ()=>{alert('13')
}
function add(a, b){return a+b
}
add(5,12);
(a, b)=>a+b
2.函数参数
1.参数扩展/数组展开
- 参数扩展:…args,用来收集剩余参数,但必须是参数列的最后一个,例如:
function add(a, b, ...args){return a+b;
};
add(1,2,3,4,4,6);//函数中的3,4,4,6会传给...args;
- 数组展开。
更多推荐
ECMASCript6 新特性介绍
发布评论