变量 let

1.存在块级作用域:变量在块级作用域中不会污染全局作用域。
2.不存在声明提升:变量只能在声明之后使用。
3.不影响作用域链:变量在作用域链中正常使用。

常量 const

1.声明时要赋初始值。

2.常量一般使用大写。

3.常量的值不能修改。

4.存在块级作用域。

5.数组和对象元素修改子元素不算是对常量修改(因为常量对应的地址并没有改变)。

es6 数组对象递归_es6

解构赋值--提取数组和对象中的值并赋值给变量

简单结构

数组解构:

es6 数组对象递归_es6_02


对象解构:

注:解构时声明的变量要在对象中存在,解构时可以不考虑 对象key的顺序(把变量a,b换位置也可以正常解构)

es6 数组对象递归_es6 数组对象递归_03

复杂结构

对象的复杂结构:

es6 数组对象递归_javascript_04


起别名:

es6 数组对象递归_数组_05

模板字符串 一对反引号 支持输出换行

用于变量拼接

es6 数组对象递归_es6 数组对象递归_06


用于dom拼接

es6 数组对象递归_前端_07

对象简化写法--如果对象中的属性名和属性值相同,可以简化书写

省略属性值

es6 数组对象递归_前端_08

省略匿名函数

es6 数组对象递归_数组_09

箭头函数 =>

写法

es6 数组对象递归_es6_10


es6 数组对象递归_前端_11


es6 数组对象递归_数组_12


this

this指向的是函数声明时所在作用域并且不会被改变。箭头函数的this

es6 数组对象递归_数组_13

普通函数的this

es6 数组对象递归_es6 数组对象递归_14


注意:1.箭头函数不能作为构造实例化对象

es6 数组对象递归_数组_15

2.不能使用arguments变量

es6 数组对象递归_前端_16


箭头函数的使用场景

适用于:与this无关的回调,如:定时器、数组方法

不适用于: 事件回调(因为this指向不正确)、对象中声明方法

参数默认值

习惯把带有初始值的形参放到最后书写基本写法

es6 数组对象递归_前端_17


es6 数组对象递归_javascript_18


结合解构赋值 并赋初始值

es6 数组对象递归_javascript_19

rest参数 获取函数实参

注:...args要放到参数最后

es6 数组对象递归_javascript_20

展开运算符(扩展运算符) 将数组转逗号分割的字符串

应用场景

1.数组合并

es6 数组对象递归_数组_21

2. 数组克隆--深拷贝

es6 数组对象递归_javascript_22


3. 伪数组转数组 (dom对象、arguments等)