zoukankan      html  css  js  c++  java
  • 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


  • 相关阅读:
    设计模式:访问者模式
    设计模式:模板模式
    三分法——求解凸性函数的极值问题——czyuan原创
    素数&&Miller_Rabbin
    【算法入门】深度优先搜索(DFS)
    快速幂取模
    hrbeu1280Turn the corner
    hdoj_3400Line belt
    【专题】三分法和牛顿迭代法总结
    zoj_3203Light Bulb
  • 原文地址:https://www.cnblogs.com/geekjsp/p/7572063.html
Copyright © 2011-2022 走看看