let
- 变量不能重复申明
- 块级作用域只在作用范围有效
- 不存在变量提升
- 不影响作用域链
{
let school = '111';
function fn (){
console.log(school)}
}
fn()
const
- 申明常量
- 一定要赋值
- 常量的值不能修改
- 块级作用域
- 对于数组和对象的修改不算做常量的修改,不会报错
解构赋值
es6允许按照一定模式从数组和对象中提取值,对变量进行赋值,这被称为解构赋值
- 数组的结构
const ha = ['1','2','32','4'];
let ['s','b','f','e']= ha;
console.log(s);//1
- 对象的结构
const ma = {
name: ma,
age:18,
sleep: function(){
console.log(‘一个人睡’)
}
}
let {name,age,sleep}= ma;
console.log(name);
``在字符串的使用
- 声明
let str = `李那那是个傻狗`
- 内容可以出现换行
- 变量拼接
let a = '1234';
let b = '5678';
let c = '${a}${b}'
简化对象写法
es6允许在大括号里面直接写入变量和函数作为对象的属性和方法
let name = "mamami"
let change = function(){
console.log('我逃')
}
const school = {
name:name,
change:change
}
箭头函数
es6允许使用箭头函数
let fn = (a,b)=>{}
- this是静态的,this始终指向函数声明时所在作用域下的this的值
- 不能作为构造函数的实例化对象
- 不能使用arguments变量
- 箭头函数可简写:例如在一定条件下可以省略小括号
- 箭头函数适合this无关的回调,定时器数组的方法回调
- es6允许给函数参数赋初始值
- 形参初始值具有默认值的参数,一般放在最后。
- 与结构赋值使用
rest参数
es6引入rest参数,用于获取函数的实参,用来代替arguments
es5
function data(){
console.log(arguments);
}
date('1','2,'3')
返回对象
es6
function date (...args){
console.log(args);
}
date('1','2,'3')
返回数组
扩展运算符
const fff = ['1','2','3'];
function chi(){
console.log(arguments);
}
chi(...fff)
数组的合并
const a = ['1','2'];
const b = ['3','4'];
const c = [...a,...b];
数组的克隆
const a = ['1','2','3'];
const b = [...a];//浅拷贝
symbol
独一无二,类似于字符串数据类型,不能运算
迭代器
迭代器是一种接口为各种不同的数据结构提供统一的访问机制,任何数据结构只要部署iterator接口就可以完成遍历操作,es6创造了一种新的遍历命令for...of循环,iterator接口主要提供for...of消费 原生具备iterator接口的数据(可使用for of 循环)
对象方法扩展
- Object.is 判断两个值是否完全相等
- Object.assign 对象的合并
- Object.setPrototyprof给实例对象函数的构造函数设置原型对象
模块化
好处:防止命名冲突,代码复用,高维护性
可选链
a&&b&&c
a?b?c