🟢一、新的变量声明方式 let/const
let 定义的变量不会被变量提升,const 定义的常量不能被修改,let 和 const 都是块级作用域
ES6新增了两个声明变量的关键字:let和const。
他们声明的变量仅在let和const关键字所在的代码块内起作用,即在使用let和const的那一对大括号{}内起作用,也称块级作用域(ES6之前只有函数作用域和全局作用域)。
{
let a = 20;
}
console.log(a); // a is not defined
const用来声明一个常量,声明时必须赋值,且一旦声明就不能改变。
🟢全局对象的属性:
ES6规定:var命令和function命令声明的全局变量依旧是全局对象的属性;let命令、const命令和class命令声明的全局变量不属于全局对象的属性。
var x = 10;
let y = 20;
window.x // 10
window.y // undefined
🟢 二、 箭头函数的使用
箭头函数内部没有arguments,也没有prototype属性,所以不能用new关键字调用箭头函数。
箭头函数特点:
- ⚡️如果参数只有一个,可以省略小括号
- ⚡️如果不写return,可以不写大括号
- ⚡️没有arguments变量
- ⚡️不改变this指向
// es6 箭头函数写法,当函数直接被return时,可以省略函数体的括号
const fn = (a, b) => a + b;
其次还有一个至关重要的一点,那就是箭头函数中,没有this。如果你在箭头函数中使用了this,那么该this一定就是外层的this。
🟢三、模板字符串
模板字符串是为了解决使用+号拼接字符串的不便利而出现的
使用 `` 将整个字符串包裹起来,而在其中使用 ${} 来包裹一个变量或者一个表达式。
// es6
const a = 20;
const b = 30;
const string = `${a}+${b}=${a+b}`;
🟢四、 展开运算符
在ES6中用...
来表示展开运算符,它可以将数组方法或者对象进行展开
const arr1 = [1, 2, 3];
const arr2 = [...arr1, 10, 20, 30];
// 这样,arr2 就变成了[1, 2, 3, 10, 20, 30];
🟢 五、class
ES6为我们创建对象提供了新的语法糖,这就是Class语法class 的本质依然是一个函数
// ES6
class Person {
constructor(name, age) { // 构造函数
this.name = name;
this.age = age;
}
getName() { // 原型方法
return this.name
}
}
constructor是创建类必须的方法,当使用new调用类创建实例时,将自动执行该方法,该方法和构造函数类似,默认返回this对象。实例的方法和属性都定义在constructor内部。相当于构造函数的this方式。
🟢 六、import、export
import导入模块、export导出模块
一个模块就是一个独立的文件。
// 全部导入
import people from './example'
// 将整个模块当作单一对象进行导入,该模块的所有导出都会作为对象的属性存在
import * as example from "./example.js"
console.log(example.name)
console.log(example.getName())
// 导入部分,引入非 default 时,使用花括号
import {name, age} from './example'
// 导出默认, 有且只有一个默认
export default App
// 部分导出
export class App extend Component {};