let const 没有变量提升 const 声明常量 可以修改引用数据类型不能修改简单数据类型
var 存在变量提升
变量:只会提升声明,不会提升赋值
函数:只会提升声明,不会提升调用
先提升function 后提升var
同一作用域内,无法对同一个变量/常量进行重复声明。
var可以重复声明
块级作用域存在暂时性死区: 使用let和const命令声明变量之前,该变量都是不可用的,语法上被称为暂时性死区。
作用域链
函数执行时,现在内部找这个变量如果找不到向上层找直到找到全局作用域或者undefined
这就是作用域链
作用域
指一个变量的作用范围
在ES6之前,只有全局作用域和函数作用域,在ES6中,新增了块级作用域
结构赋值
数组:解构时不能用字符串,通过下标来结构
对象:按照属性来解构,可以更换属性名
箭头函数:
箭头函数没有原型prototype 还有 this 的指向问题,即不能用作为构造函数
没有伪数组在ES5function里有伪数组
箭头函数没有this, this指向定义箭头函数得父级
箭头函数只能声明成**匿名函数**,但可以通过表达式的方式让箭头函数具名
模板字符串:
用一对反引号(`模板字符串`)标识,
在模板字符串中可以嵌入变量 ,js表达式或函数等 ,变量,js表达式或函数需要写在${}中
展开运算符(...):
将字符串转成数组
let arr='123'
const Arr=[...arr]//['1','2','3']
合并数组
const arr1=[1,2,3]
const arr2=[3,4,5]
const arr3=[...arr1,...arr2]
得arr[1,2,3,4,5,6]
函数默认形参要写在最后面否则数字和undefined相加得NAN
reset剩余参数在函数形参里写...arguments
读法: 迭代器 生成器 遍历器
1.概念: 是一种接口,为各种不同的数据结构提供统一的访问机制。任何数据结构只要部署 terator 接口,就可以完成遍历操作(即依次处理该数据结构的所有成员
2.产生原因: JavaScript 原有的表示“集合”的数据结构,主要是数组 (Array) 和对象 ( bject ),ES6 又添加了Map 和 Set 。这样就有了四种数据集合,用户还可以组合使用它们,
定义自己的数据结构,比如数组的成员是 Map , Map 的成员是对象。这样就需要一种统一的接口机制,来处理所有不同的数据结构。
3.作用:
(1).为各种数据结构,提供一个统一的、简便的访问接口:
(2).使的数据结构的成员能够按某种次序排列
(3)es6创造了一种新的遍历命令for.....of循环卷,iterator接口主要供for...of消费4.遍历过程
(1)创建一个指针对象,指向当前数据结构的起始位置。也就是说,遍历器对象本质上,就是一个指针对象.
(2) 第一次调用指针对象的 next 方法,可以将指针指向数据结构的第一个成员
(3) 第二次调用指针对象的 next 方法,指针就指向数据结构的第二个成员
(4) 不断调用指针对象的 next 方法,直到它指向数据结构的结束位置。
每一次调用 next 方法,都会返回数据结构的当前成员的信息。具体来说,就是返回一个包含 value 和 done 两个属性的对象。其中, value 属性是当前成员的值
, done 属性是一个布尔值,表示遍历是否结束。5.原生具备 lterator 接口的数据结构如下
Array
Map
Set
String
TypedArray
函数的 arguments 对象
NodeList 对象
遍历方法:概念 是一个接口 为不同 的数据结构提供了一种访问机制任何数组只要部署iterator接口
就可以完成便利操作(一次处理该数据的所有成员)
作用:为不同 的数据结构提供了一种访问机制 2.(一次处理该数据的所有成员)es6创建了一种新的遍历命令 fro...of循环
生成器:
16.2 概念
概念: promise函数是解决异步编程问题产生的,所谓 Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是个异步操作)的结果。从语法上说,Promise 是一个对象,
从安可以获取异步操作的消息。Promise 提供统一的 API,各种异步操作都可以用同样的方法进行处理
16.3 特点
1.对象的状态不受外界影响,有三种状态: pending (进行中)、 fulfilled (已成功)和 rejected (已失败)
2.一旦状态改变,就不会再变,任何时候都可以得到这个结果.
3.Promise 对象的状态改变,只有两种可能: 从 pending 变为 fulfilled 和从 pending 变为 rejected 。只要这两种情况发生,状态就凝固了,不会再变了,会一直保持这个结果,
这时就称为 resolved(已定型)。如果改变已经发生了,你再对 Promise 对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。
promise 总结
1.概念:是一个容器,里面包裹一步代码
2:状态,padding,funfilled,reject
3:状态变化 : 从pedding->成功,从->eject
4:状态一经凝固,不会在变化
5:链式嗲用->async,await,
6:promise的then返回的是一个promise对象
7:方法:Promise。all(【】)
8:promise.rece([])
9:promse.finally()
map:
set :
方法都有
1.获取元素的个数 array.size()
2.添加元素:array.add()
3.删除元素:array.delete()
4.检测是否存在这个值:array.has()
5.清空:array.clear()
class类:
function Point(x,y){
this.x=x;
this.y=y
}
Point.prototype.toString=function(){
return '('+this.x+','+this.y+')'
}
var p = new Point(1,2)
console.log(p);
后续引入class函数
class Shouji{
构造方法 名字不能修改
constructor(brand,price){
this.brand=brand;
this.price=price
}
方法必须使用该语法,不能使用ES5的对象完整形式
call(){
console.log(‘我可以打电话了’)
}
set(){}
get(){}