ES6新语法
var关键字
- 可以一次定义多个变量
- 定义时可以只声明不赋值
- 定义之后可以随时修改变量的值
- 变量声明会被提升
- 可重复定义变量
- 全局定义的变量会被作为全局对象(global/window)的属性
- 在代码块中使用 var 关键字声明的变量不会被束缚在代码块中
let关键字
- 可以一次定义多个变量
- 定义时可以只声明不赋值
- 定义之后可以随时修改变量的值
- 使用 let 关键字定义的变量,变量声明不会被提升,因此我们需要先定义,后使用
- 在同一作用域下,不能重复定义同名变量
- 全局定义的变量会被作为全局对象(global/window)的属性
- 在代码块中使用 let 关键字声明的变量会被束缚在代码块中
const关键字
- 在使用 const 关键字声明常量时,必须要进行赋值(初始化)。
- 常量一旦初始化后,就不能被修改。
- 在同一作用域下,不能重复定义同名的常量
- 常量的声明不会被提升
- 所有常量只在当前代码块内有效,一旦执行流到了代码块外,这些常量就会被立即销毁。
对象解构
const obj = {
firstName: 'AA',
lastName: 'aaa',
myAge: 30,
phone: {
number: 110,
brand: '小米',
color: '黑色'
}
};
-
使用对象解构初始化同名变量
// 告诉 obj 对象,把 firstName 属性的值赋值给同名变量 firstName,把 lastName 属性的值赋值给同名变量 lastName let { firstName, lastName } = obj; console.log(firstName, lastName) 'AA''aaa'
-
使用对象解构初始化非同名变量
// 告诉 obj 对象,把 firstName 属性的值赋值给变量 first_name,把 lastName 属性的值赋值给变量 last_name // let { firstName: first_name, lastName: last_name } = obj; // console.log(first_name, last_name) 'AA''aaa'
-
为变量指定默认值
// 当 obj 对象中没有 myAge 属性时,变量 myAge 默认会被赋值为 20 // let { firstName, lastName, myAge = 20 } = obj; // console.log(firstName, lastName, myAge) // 'AA' 'aaa' 30 // 当 obj 对象中没有 myAge 属性时