一、ES6新增语法------let、 const
let
- let声明的变量只在所处于的块级有效
- 不存在变量提升
- 利用let关键词声明的变量会绑定在这个块级作用域,不会受外界的影响(也就是暂时性死区)
- 防止循环变量变成全局变量
const
- 声明的变量时一个常量
- 具有块级作用域
- 声明变量时必须赋值,且赋值后不能修改
总结:var、let、const的区别
var | let | const |
函数级作用域 | 块级作用域 | 块级作用域 |
变量提升 | 不存在变量提升 | 不存在变量提升 |
值可更改 | 值可更改 | 值不可更改 |
二、解构赋值
1、数组解构
let [a, b, c] = [1, 2, 3];
console.log(a)//1
console.log(b)//2
console.log(c)//3
//如果解构不成功,变量的值为undefined
2、对象解构
let person = { name : 'zhangsan' , age : 20 };
let{ name , age } = person;
console.log (name);// 'zhangsan'
console.log(age);// 20
三、箭头函数
() => {}
- ():代表是函数
- =>:必须要的符号,指向哪一个代码块
- {}:函数体
- const fn =()=> {}. 代表把一个函数赋值给fn
⚠️ 函数体中只有一句代码,且代码的执行结果就是返回值,可以省略大括号
如果形参只有一个,可以省略小括号
箭头函数不绑定this关键字,箭头函数中的this,指向的是函数定义位置的上下文this
箭头函数的优点在于解决了this执行环境所造成的一些问题,比如:解决了匿名函数this指向的问题(匿名函数的执行环境具有全局性),包括setTimeout和setInterval中使用this所造成的问题
四、剩余参数
剩余函数语法允许我们将一个不定数量的参数表示为一个数组,不定参数定义方式,这种方式很方便的去声明不知道参数情况下的一个函数
function sum (first, ...args) {
console.log(first); //10
console.log(arges); //[20,30]
}
sum(10,20,30)