let
- 声明变量的新方法。
- 变量无法重复声明。
- 块级作用域。也就是说let只在代码块中生效,包括if、else等花括号中的变量不会定义到全局。
- 不存在变量提升。也就是说,在声明变量之前使用变量会报错。
- 不影响作用域链效果。也就是,在函数中往上找变量,函数外面由let定义的变量,仍然能找到。
用let实现循环遍历。这是因为只在块级作用域中生效。
const
用来声明一个常量,值没有办法被修改的。
- 一定要赋初始值。
- 一般常量使用大写(潜规则)
- 常量的值没有办法被修改。
- 块级作用域
- 对于数组和对象的元素修改,不算对常量进行修改,不会报错。(因为指向的地址并未发生改变)
变量的解构赋值
用一定的模式从数组和对象中提取值。
数组的解构
对象的解构
模板字符串
`我也是一个字符串哦~`
- 内容中可以直接出现换行符
- 变量拼接,使用
${}
对象的简化写法
属性名和属性值相同可以只写一个。
函数也可以直接写。
箭头函数
- 箭头函数中的this是静态的,始终指向声明函数时所在作用域下的this值。
- 不能作为构造化实例对象
- 不能使用arguments变量
- 箭头函数的简写
函数参数的默认值
传了参数我们就使用传入的参数,没有传入实参,我们就使用默认值。
默认值可以与解构赋值一起使用。
也可以传入默认值。
rest参数
rest必须放到参数的最后。输出的是一个数组。
扩展运算符
Symbol
Symbol简单介绍
数据类型的总结:
利用Symbol给对象添加属性
给对象添加属性的时候我们不用担心命名冲突的问题。
Symbol内置值
自己来控制类型检测。
控制值是否可以展开。
扩展对象的功能~~
迭代器
for of遍历的键值,for in遍历的键名
生成器
生成器是一个特殊的函数,异步函数,纯回调函数。
yield
算作函数代码的切割符,每次用函数next()
来执行代码。
for of遍历出来的是value。
生成器函数的参数
传入参数就会作为执行一次代码的返回值。
promise