兼容性
- 并非对于所有浏览器都适用,ES5则兼容所有浏览器,可以引入
bable.js
自动将ES6转译为ES5. -
新特性
let,const
- 字符串API扩展:
includes()
返回布尔值,表示是否找到了参数字符串。startsWith()
返回布尔值,表示参数字符串是否在原字符串的头部。endsWith()
返回布尔值,表示参数字符串是否在原字符串的尾部
-
解构表达式
ES6 中允许按照一定模式从数组和对象中提取值,然后对变量进行赋值,这被称为解构
const [x,y,z] = arr; //相当于定义多个变量,使用数组值进行初始化
//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’]); ```