变量 let
1.存在块级作用域:变量在块级作用域中不会污染全局作用域。
2.不存在声明提升:变量只能在声明之后使用。
3.不影响作用域链:变量在作用域链中正常使用。
常量 const
1.声明时要赋初始值。
2.常量一般使用大写。
3.常量的值不能修改。
4.存在块级作用域。
5.数组和对象元素修改子元素不算是对常量修改(因为常量对应的地址并没有改变)。
解构赋值--提取数组和对象中的值并赋值给变量
简单结构
数组解构:
对象解构:
注:解构时声明的变量要在对象中存在,解构时可以不考虑 对象key的顺序(把变量a,b换位置也可以正常解构)
复杂结构
对象的复杂结构:
起别名:
模板字符串 一对反引号 支持输出换行
用于变量拼接
用于dom拼接
对象简化写法--如果对象中的属性名和属性值相同,可以简化书写
省略属性值
省略匿名函数
箭头函数 =>
写法
this
this指向的是函数声明时所在作用域并且不会被改变。箭头函数的this
普通函数的this
注意:1.箭头函数不能作为构造实例化对象
2.不能使用arguments变量
箭头函数的使用场景
适用于:与this无关的回调,如:定时器、数组方法
不适用于: 事件回调(因为this指向不正确)、对象中声明方法
参数默认值
习惯把带有初始值的形参放到最后书写
基本写法
结合解构赋值 并赋初始值
rest参数 获取函数实参
注:...args
要放到参数最后
展开运算符(扩展运算符) 将数组转逗号分割的字符串
应用场景
1.数组合并
2. 数组克隆--深拷贝
3. 伪数组转数组 (dom对象、arguments等)