说明
ECMAScript6新的JavaScript标准
变量声明
let
1 let声明的关键字和var声明基本一致
2.let声明的关键字是局部作用域,只对一对{}中启用
lf switch for 都可以形成局部作用域
3. let不会变量提升
4. let在同一个作用域不能重复声明
const
1和let基本一致(局部,不会变量提升,不能重复声明)
2声明必须赋值
3声明的数据不能修改
4建议变量名大写
遍历
01 for(let s of str){ console.log(s);}
02 es5的trim()方法
可以移除两端的空格
03 es6 方法 repeat
用
04 es6 查找是否包含
includes 是否包含返回true跟false
indexOf lastIndeOf 下标或者-1
检测
endsWith以xxx结尾 .startwidth 以xxx为开头
填充
字符串模板
`` ${}定义js
可以随意换行,可以随意使用符合
字符串
检查跟填充
去重
函数参数
默认参 拓展参数 不定参数
数组的解构
01数组解构:就是把数组解析为单个变量
02通过逗号跳过
03…接受剩余值
04可以给默认值
05快速交换变量
数组高阶
sort排序
ES6新增
find查找符合条件的元素
findIndex 查找符合条件元素的下标
filter过滤不符合的元素 返回true保留 返回false过滤
forEach遍历
forEach(function(item,index,self))
item当前遍历的元素
index当前的下标
self被遍历的数组
map映射
reduce累计
reauce(function(a,b))
a 上一次返回的结果
b 当前遍历的元素
some有一个
every 每一个
同步给异步
同步 按属性执行代码,上一步不结束,下一步不开始
异步 先执行主线程代码,再执行其他代码
实现异步 1回调函数,2时间响应,3promise承诺 ,4订阅和发布模式
新增数据类型
set 不重复的数组 常用来去重
add 添加
delete删除
clear清空
size大小
has检测
[…new Set(arr)]
map任意键的对象
set(key,value) 设置
get(key) 获取
delete删除
size大小
clear清空
weakSet值都是引用类型的set
weakMap键都是引用类型
symbol唯一符合(对象的键)
迭代类型
可以通过for of 遍历的对象都是可迭代对象
String字符串
Array数组
Set集合
Map图
for(let v of myset)
for(let k of myArr.keys())
for(let v of myArr.values())
for(let [k,v] of myArr.entries())
类
typeof class 结果是Function 类的本质是函数
class Block{}
构造函数
constructor(){} 实列化的时候 new关键字调用的就是构造函数
super() 调用父类的构造函数
extends 继承父类的方法
static 类的静态属性和方法
类的this指向的是它的实列(也就是new出来的对象)
module模块
导出
导出默认
function format(date){}
export defaut format
export default function format(date){}
导出export function reverse(){}
导出变量export const PRICE = 500;
先声明再导出
var name = “mumu”;
function say(){
console.log("我的价格是"+PRICE)
}
export {name,say}
导入
<script type="module">
导入默认
import format from './相对路径'
// format可以和导出的时候不一致
导入
import {reverse} from './相对路径'
// reverse要和源文件方法一致
导入别名impot {reverse as r} rom ’./相对路径‘
默认和普通方法是一个文件
import format ,{reverse as r,PRICE,name,say} from ’./相对路径‘
导入所有
import * as utitls from ’文件地址‘
utils.reverse()
默认导出方法访问
utils.default()
Object.defimeProperty
proxy代理对象
Promise承诺
模板
var p = new Promise((resolve,reject)=>{
// 异步操作
resolve(data)
reject(err)
})
有三个状态状态变化就不可逆
pendding
resolved
rejected
实例p
.then(res=>{})
回调函数获取resolved 返回的结果
返回一个新的promise实例
.catch(err=>{})
获取rejected的原因
解决
1. 异步操作
2. 回调地狱(层级过深)
all全部
所有promsie都resolve,all才执行resolve
race 赛跑(返回最先resolve结果)
拿到最到的resolve结果