兼容性

  • 并非对于所有浏览器都适用,ES5则兼容所有浏览器,可以引入bable.js自动将ES6转译为ES5.
  • 现如今很多场景下ES6泛指ES5.1后的所有版本

    新特性

  • let,const

  • 字符串API扩展:
    • includes() 返回布尔值,表示是否找到了参数字符串。
    • startsWith() 返回布尔值,表示参数字符串是否在原字符串的头部。
    • endsWith() 返回布尔值,表示参数字符串是否在原字符串的尾部
  • 字符串符号扩展:?

    解构表达式

  • ES6 中允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称为解构

    1. const [x,y,z] = arr; //相当于定义多个变量,使用数组值进行初始化
    2. //const x=arr[0],y=arr[1] ...

    ```javascript const person = { name: “jack”, age: 21, language: [‘java’,’js’,’css’] };

// 解构表达式获取值 const {name, age, language} = person; //创建name变量,值为person里的name… //可以指定变量别名: const {name:n, age:a, language:l} = person; console.info(n, a, l);

<a name="HLF5I"></a>
## 函数优化

- es6里函数的新特性
   - 可以设置默认值
   - 函数定义可以使用箭头函数实现简写。箭头函数其实就相当于lambda,只不过`->`换为了`=>`
```javascript
function add(a, b = 1) {
    return a + b;
}

add(10);  //11   第二个参数没有传入,默认为1
add(10,10)  //20
var print = function (obj) {
  console.info(obj);
}

// 简写为
var print = obj => console.info(obj);  //多行函数体时用{}包裹
var sum = function (a, b) {
  return a + b;
}

// 简写为
var sum = (a, b) => return a + b;  //多行函数体时用{}包裹
let person = {
    name: ...,
    age: ...,
    // 老版
    eat1: function (food) {
        console.info(this.name + 'is eating ' + food);
    },
    // 箭头函数简写版
    eat2: (food) => console.info(this.name + 'is eating ' + food);
    // 更简的版本
    eat3(food) {
      console.info(this.name + 'is eating ' + food);
    }
};
const person = { ... };

// 原代码
function hello(person) {
  console.info(person.name);
} 
hello(person);

// 现代码
var hello = ({name}) => console.info(name);
hello(person);
// 字符串数组
let arr = ['1', '2', '3', '4'];
console.info(arr);

let newArr = arr.map(s => parseInt(s));
console.info(newArr);

扩展运算符

  • 将数组转为逗号分隔的参数序列,注意是可以转为参数列表,而不仅仅只是转逗号分隔的字符串 ```javascript // 基本使用 console.log(…[1, 2, 3]); // 等同于 console.log(1, 2, 3);

console.log(1, …[2, 3, 4], 5); // 等同于 console.log(1, 2, 3, 3, 4, 5);

// 为函数传值 function add(x, y) { return x + y; }

var numbers = [1, 2]; add(…numbers); // 等同于 add(1, 2);

// 数组合并 let arr = […[1,2,3],…[4,5,6]];// 等同于 let arr = [1, 2, 3, 4, 5, 6];

// 与解构表达式结合 const [first, …rest] = [1, 2, 3, 4, 5]; // 等同于 first = 1; rest = [2, 3, 4, 5];

// 将字符串转成数组 console.log([…’hello’]) // 等同于 console.log([‘h’, ‘e’, ‘l’, ‘l’, ‘o’]); ```