ES6一些理解

134 阅读2分钟

let

  1. 变量不能重复申明
  2. 块级作用域只在作用范围有效
  3. 不存在变量提升
  4. 不影响作用域链
{
let school = '111';
function fn (){
console.log(school)}
}
fn()

const

  1. 申明常量
  2. 一定要赋值
  3. 常量的值不能修改
  4. 块级作用域
  5. 对于数组和对象的修改不算做常量的修改,不会报错

解构赋值

es6允许按照一定模式从数组和对象中提取值,对变量进行赋值,这被称为解构赋值

  1. 数组的结构
 
 const ha = ['1','2','32','4'];
 let ['s','b','f','e']= ha;
 console.log(s);//1
  1. 对象的结构
const ma = {
name: ma,
age:18,
sleep: function(){
console.log(‘一个人睡’)
}
}
let {name,age,sleep}= ma;
console.log(name);

``在字符串的使用

  1. 声明
let  str = `李那那是个傻狗`
  1. 内容可以出现换行
  2. 变量拼接
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)=>{}
  1. this是静态的,this始终指向函数声明时所在作用域下的this的值
  2. 不能作为构造函数的实例化对象
  3. 不能使用arguments变量
  4. 箭头函数可简写:例如在一定条件下可以省略小括号
  5. 箭头函数适合this无关的回调,定时器数组的方法回调
  • es6允许给函数参数赋初始值
  1. 形参初始值具有默认值的参数,一般放在最后。
  2. 与结构赋值使用

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 循环)

对象方法扩展

  1. Object.is 判断两个值是否完全相等
  2. Object.assign 对象的合并
  3. Object.setPrototyprof给实例对象函数的构造函数设置原型对象

模块化

好处:防止命名冲突,代码复用,高维护性

可选链

a&&b&&c
a?b?c