ES6(ECMAScript 6)是即将到来的新版本JavaScript语言的标准,代号harmony(和谐之意,显然没有跟上我国的步伐,我们已经进入中国梦版本了)。上一次标准的制订还是2009年出台的ES5。目前ES6的标准化工作正在进行中,预计会在14年12月份放出正式敲定的版本。但大部分标准已经就绪,且各浏览器对ES6的支持也正在实现中

一,箭头表达式(lambda表达式)

我们知道在JS中回调是经常的事,而一般回调又以匿名函数的形式出现,每次都需要写一个function,甚是繁琐。当引入箭头操作符后可以方便地写回调了。请看下面的例子。

var array = [1, 2, 3];
//传统写法
array.forEach(function(v, i, a) {
console.log(v);
});
//ES6
array.forEach((v,i) => {console.log(v);console.log(i)});

二.类的支持

 ES6中添加了对类的支持,引入了class关键字(其实class在JavaScript中一直是保留字,目的就是考虑到可能在以后的新版本中会用到,现在终于派上用场了)。JS本身就是面向对象的,ES6中提供的类 实际上只是JS原型模式的包装。现在提供原生的class支持后,对象的创建,继承更加直观了,并且父类方法的调用,实例化,静态方法和构造函数等概念都更加形象化。

class Animal {
//ES6中新型构造器
constructor(name) {
this.name = name;
}
//实例方法
sayName() {
console.log('My name is '+this.name);
}
}
//类的继承
class Programmer extends Animal { //extends 继承于
constructor(name) {
//直接调用父类构造器进行初始化
super(name);
}
program() {
console.log("I'm coding...");
}
}
//测试我们的类
var animal=new Animal('dummy'),
wayou=new Programmer('wayou');
animal.sayName();//输出 ‘My name is dummy’
wayou.sayName();//输出 ‘My name is wayou’
wayou.program();//输出 ‘I'm coding...’

  

三.默认参数值

    现在可以在定义函数的时候指定参数的默认值了,而不用像以前那样通过逻辑或操作符来达到目的了。

function sayHello(name){
//传统的指定默认参数的方式
var name=name||'dude';
console.log('Hello '+name);
}
//运用ES6的默认参数
function sayHello2(name='dude'){
console.log(`Hello ${name}`);
}
sayHello();//输出:Hello dude
sayHello('Wayou');//输出:Hello Wayou
sayHello2();//输出:Hello dude
sayHello2('Wayou');//输出:Hello Wayou

四.let和const关键字

       可以把let看成var,只是它定义的变量被限定在了特定范围内才能使用,而离开这个范围则无效。const则很直观,用来定义常量,即无法被更改值的变量。

for (let i=0;i<2;i++){
console.log(i);//输出: 0,1
}
再如:
function example(){
let a=1; //此a的作用域仅限于 example方法
console.log(a)
}

五.promises

      Promises是处理异步操作的一种模式,之前在很多三方库中有实现,比如jQuery的deffered 对象。当你发起一个异步请求,并绑定了.when(), .done()等事件处理程序时,其实就是在应用promise模                式。

//创建promise
var promise = new Promise(function(resolve, reject) {
// 进行一些异步或耗时操作
if ( /*如果成功 */ ) {
resolve("Stuff worked!");
} else {
reject(Error("It broke"));
}
});
//绑定处理程序
promise.then(function(result) { // .then方法中有2个回掉。第一个为成功回掉,第二个为失败回掉。如果promise执行的是resolve则执行成功回掉,如果是reject,则执行失败回掉
//promise成功的话会执行这里
console.log(result); // "Stuff worked!"
}, function(err) {
//promise失败会执行这里
console.log(err); // Error: "It broke"
});

  

以上5个是最新最常用的es6新特性

最新文章

  1. mysql-5.7.11-winx64.zip 安装配置
  2. Ubuntu14.04下安装docker
  3. 切分 Tomcat 的 catalina.out 文件,解决日志文件过大的问题
  4. 利用SegmentedControl切换控制器的view
  5. POJ3258 River Hopscotch
  6. 外部引用JavaScript文件乱码问题
  7. PAT乙级 1021. 个位数统计 (15)
  8. json格式的字符串转为json对象遇到特殊字符问题解决
  9. css3中的提供的元素变化属性
  10. Android Paint、Canvas、Matrix使用讲解(一、Paint)
  11. js加载XML文件
  12. Dynamics CRM 非声明验证方式下连接组织服务的两种方式的性能测试
  13. C#多条件查出来的多个DataSet,然后循环将数据整合
  14. Android逆向破解表单注册程序
  15. Base64格式上传文件至阿里云(java)
  16. 程序包管理dpkg、apt-get、服务端openssh-server与客户端Xshell设置及lrzsz安装使用
  17. JAVA设计模式(二)工厂模式
  18. poj 3624 &amp;&amp; hdu 2955(背包入门)
  19. One-hot 编码/TF-IDF 值来提取特征,LAD/梯度下降法(Gradient Descent),Sigmoid
  20. 在Mac上用bootcamp安装windows,使用Android studio启动模拟器时蓝屏问题的解决方法

热门文章

  1. hack (浏览器兼容css hack)
  2. 删除List中指定的元素
  3. 3.用less浏览文件内容
  4. Math类中常用方法
  5. Subversion FAQ(常见问题解答)
  6. git常用命令#自用#
  7. windows的共享内存
  8. 解决yii2.0里url重写引用js路径问题(@web/的用法)
  9. JavaScript的DOM_其他的扩展
  10. non-fragile:oc2.0特性