1. ECMA6

ECMA6的兼容性,各个浏览器有不同程度的支持,包括chrome和firefox都有部分不支持。

IE8:

1.1 let和const

ES6扩展了两个用来声明变量的关键字,分别是 let 和 const,其和 var 关键字有不同之处

let和const:

1. 块级作用域 {...} 有效

2. 不会做预处理,因此没有变量的提升

3. 同名变量不能重复定义

4. const 的值不可变,即常量,let 的值可变

5. let 适用于块级作用域中定义新的变量,并只在此块中有效。const 适用于定义常量

1.2 变量的结构赋值

ES6扩展了变量的解构赋值,使得变量赋值更为简化。其最大应用就是函数多返回值和变量值交换。

用法:

数组:var [a, b] = [22, 'pkbai'];  console.info(a, b)

对象:var {name, age} = { name: 'pkbai', age: 22 }; console.info(name, age);

1.3 各个数据类型扩展

数值型:

Number.isFinite(i)       // 判断数值是否有穷

Number.isNan(i)         // 参数是否 Nan

Number.isInteger(i)    // 参数是否整数

Number.parseInt(i)     // 将参数转换为整数

Math.trunc(i)              // 去除数值类型的小数点,没有四舍五入

字符串:


xxx.contains(str);        // 字符串是否包含指定字符串

xxx.startsWith(str);     // 字符串是否以指定字符串开头

xxx.endsWith(str);      // 字符串是否以指定字符串结尾

xxx.repeat(count);      // 字符串重复 count 遍

模板字符串:ES6扩展了方便的模板字符串,可以用来替换原来麻烦的字符串拼接操作。模板字符串用 `...` 来定义。而拼接的变量则用 ${...} 来替换。譬如:对象 var pk = { name: 'pkbai', age: 22 }; 打印出你的姓名和年龄

1. 非模板字符串方式

console.info("我是:" + pk.name + ", 今年:" + pk.age);

2. 模板字符串方式

console.info(`我是:${pk.name}, 今年:${pk.age}`);

对象:

1. 增强的对象写法和方法写法

对象增强:

var name, age = 'pkbai', 22;

非增强:var obj = { name: name, age: age };

增强:var obj = { name, age }

方法增强:

非增强:var obj = { test: function() { // ... } }

增强:var obj = { test() { // ... } }

2. Object.is(v1, v2);

3. Object.assign(target, source1, source2..);  // 将 source... 的值赋给 target

4. __proto__属性显示操作

数组:

Array.from( v );             // 将伪数组对象或可遍历对象转换为真正的数组对象

Array.of( v1, v2, v3 );    // 将一系列值转为数组

find( function(value, index, arr) { return true } );            // 找到第一个满足条件的元素

findIndex( function(value, index, arr) { return true } );   // 找到第一个满足条件的元素所对应的下标

keys();         // 返回包含所有下标的可迭代对象

values();      // 返回包含有值的可迭代对象

entries();     // 返回包含有下标和值的可迭代对象

函数:

1. 箭头函数:只有一个参数时不用加小括号 ( ),函数体只有一条语句时不用加大括号 { },其默认带 return

() => // code...

param => { // code... }

(param1, param2) => { // code... }

var fun = function(v) { return v + 3; }

var fun2 = v = v + 3;

2. 形参的默认值

function point( x = 1, y = 2) { this.x = x; this.y = y; }

3. 可变参数

function add(... values) {

    let sum = 0;

    for (value of values) {

        sum += value;

    }

    return sum;

}

1.4 Set/Map集合

类比 Java 中的 Set 和  Map 集合的操作

1.5 For..of 遍历

简单如一

1.5 Promise

promise

1.5 class类

class