变量和函数提升
1… 变量提升
变量使用:先声明,后访问
变量提升:先访问,后声明(let不存在变量提升的现象)
变量在声明之前被访问,变量的值为undefined
推荐:先声明,后使用
2… 函数提升
函数提升能够使函数的声明调用更灵活
函数表达式不存在提升的现象
闭包
定义:称为闭包函数,就是一个【能够访问别的作用域变量】的函数,作为返回值的函数
1-1… 语法格式的闭包函数
1-2… 经常使用的闭包函数:
2… 闭包函数的作用
延长变量的使用范围,在函数外部能访问函数内部的变量
3… 闭包函数的缺点
变量不能及时被销毁,可能会导致内存泄漏
注:几乎所有函数都可以是闭包函数,只是在使用得时候,见的比较多的是一个函数中返回了另一个函数
函数的参数arguments
定义:是函数内部内置的伪数组变量,它包含了调用函数时传入的所有实参
arguments是一个伪数组
作用:动态获取函数的参数
注:参数不固定时使用arguments
剩余参数…
语法:…(置于最末函数形参之前,用于获取剩余的参数)
… 是一个真数组
剩余参数… 还可用在数组或对象前,表示“展开”的意思,将里面的每个单元自动逐个取出
箭头函数
定义:箭头函数是一种声明函数的简洁语法,与普通函数没有本质的区别,差异就是语法格式
语法:let 函数名 = (形参) => {函数体(此处可以写 return)}
其他简写
如果只有一个形参,可以省略小括号
如果函数体只有一行代码,可以省略花括号(省略花括号,如果有返回值可以省略return)
注:
箭头函数属于函数表达式,不存在函数提升
箭头函数中没有arguments,只能使用…剩余参数获取实参
箭头函数没有this,在箭头函数里的this指向window
因为this的原因,DOM的事件回调中尽量不要使用箭头函数