ECMAScript 和 Javascript 的关系
- ES是JS的标准化规范
- JS是ES的扩展语言(在ES的基础之上)
- 浏览器环境中的JS = ES + Web APIs
- Node环境中的JS = ES + Node APIs
- JS本身指的就是ES
ECMAScript2015的新特性
ES6 特指ES2015,泛指ES5.1之后的所有版本
1.声明变量
- let,块级作用域
- const,常量
- var,原有的变量声明方式
最佳实践:不用var,主用const,配合使用let
2.数组的解构
// 获取数组的每个元素
const arr = [11, 22, 33]
// 不使用解构
const a1 = arr[0]
const a2 = arr[1]
const a3 = arr[2]
// 使用解构
const [a1, a2, a3] = arr
console.log(a2) //22
const [a1, a2, a3, a4] = arr
console.log(a4) //undefined
// 剩余参数
const [a1, ...rest] = arr
console.log(rest) //22, 33
// 默认值
const [a1, a2, a3, a4='default value'] = arr
console.log(a4) //default value
3.对象的扩展
3.1 对象的解构
const obj = {
name: 'flower', age: 18}
const {
name, age} = obj
console.log(name, age)
// 重命名
const {
name: myName} = obj
console.log(myName)
// 默认值
const {
name: myName='box', age, sex='女'} = obj
console.log(myName, age, sex) //flower 18 女
3.2 对象字面量增强
- 属性简写
const name = 'Tom'
const obj = {
name, //属性名就是变量名,属性值是变量值
age: 18
}
- 方法简写
const obj = {
fn: function(){
//原来的写法
},
fnn(){
//新的写法
}
}
- 计算属性
可以用表达式的值作为属性名,需要放在中括号里
const prop1 = 'x'
const prop2 = 'y'
const obj = {
[prop1]: 1,
[prop2]: 2
}
obj //{x: 1, y: 2}
3.3 对象新增方法
- Object.assign(targetObj, …sourceObj)
将多个源对象中的属性复制到目标对象,并返回目标对象 - Object.is(a, b)
判断两个值是否相等
0==false //true
0===false //false
+0 === -0 //true
NaN === NaN //false
Object.is(+0, -0