es6再回顾 info深入理解es6

迭代器和for-of循环

es5使用内建的forEach方法来遍历数组

arr.foreach(function(value){

  console.log(value);

});

这段代码看起来简洁,但这种方法有一个小缺陷:你不能使用break语句中断循环,也不能使用return语句返回到外层函数。

 

es6  for-of 可以正确响应break、continue和return语句

for (var value of myArray) {
  console.log(value);
}

for-of可以用来干什么

for-in循环用来遍历对象属性。

for-of循环用来遍历数据—例如数组中的值。

for-of循环也支持字符串遍历,它将字符串视为一系列的Unicode字符来进行遍历:

它同样支持Map和Set对象遍历。

for (var [key, value] of phoneBookMap) {
   console.log(key + "'s phone number is: " + value);
}

var map=new Map([['a',1],['b',2]]);

for (var [key, value] of map) {
console.log(key + "'s phone number is: " + value);
}
VM1833:2 a's phone number is: 1
VM1833:2 b's phone number is: 2

Map:Map结构提供了“值—值”的对应,是一种更完善的Hash结构实现。如果你需要“键值对”的数据结构,Map比Object更合适。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。

//1.
var map = new Map();
map.set('one', 1);
map.set('two', 2);
map.set('three', 3);
//...

//2. var map = new Map([['one',1], ['two', 2], ['three', 3]]);


ES6生成器(Generators)



我们称之为生成器函数,它与普通函数有很多共同点,但是二者有如下区别:
  • 普通函数使用function声明,而生成器函数使用function*声明。

模板字符串

反撇号(`)基础知识

ES6引入了一种新型的字符串字面量语法,我们称之为模板字符串(template strings)。除了使用反撇号字符 ` 代替普通字符串的引号 ' 或 " 外,它们看起来与普通字符串并无二致。在最简单的情况下,它们与普通字符串的表现一致:

context.fillText(`Ceci n'est pas une chaîne.`, x, y);



五.不定参数和默认参数




es6数据类型
  • Undefined 未定义
  • Null 空值
  • Boolean 布尔类型
  • Number 数字类型
  • String 字符串类型
  • Object 对象类型

ES6引入了一种新的原始数据类型Symbol,表示独一无二的值

 



var a = [];
for (var i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 10

上面代码中,变量i是var声明的,在全局范围内都有效。所以每一次循环,新的i值都会覆盖旧值,导致最后输出的是最后一轮的i的值。而使用let则不会出现这个问题。

 
var a = [];
for (let i = 0; i < 10; i++) {
  a[i] = function () {
    console.log(i);
  };
}
a[6](); // 6




箭袋中的新羽

ES6中引入了一种编写函数的新语法

    // ES5
    var selected = allJobs.filter(function (job) {
      return job.isSelected();
    });
    // ES6
    var selected = allJobs.filter(job => job.isSelected());

当你只需要一个只有一个参数的简单函数时,可以使用新标准中的箭头函数,它的语法非常简单:标识符=>表达式。你无需输入functionreturn,一些小括号、大括号以及分号也可以省略。

 

如果要写一个接受多重参数(也可能没有参数,或者是不定参数、默认参数参数解构)的函数,你需要用小括号包裹参数list。

    // ES5
    var total = values.reduce(function (a, b) {
      return a + b;
    }, 0);
    // ES6
    var total = values.reduce((a, b) => a + b, 0);


 




关于Map:http://www.cnblogs.com/sker/p/5520392.html
http://www.cnblogs.com/dagaoxiaozheng/p/6605981.html

 



 

posted @ 2017-09-21 23:28  haveProgress  阅读(180)  评论(0编辑  收藏  举报