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