一、今日学习内容
1.学习目标
1.执行环境与作用域--能够分析清楚即可,掌握作用域的分类--10%
2.函数进阶的精通--非常熟练的掌握--40%
3.闭包的精通--能够说的非常清楚什么是闭包,有什么作用,有什么特点--50%
2.执行环境和变量对象和作用域
1.概念
1.标识符:变量名、函数名、形参、对象的键名,统称为标识符;
2.作用域:标识符可以被访问的范围,就是作用域;
3.执行环境:代码的运行环境,js有两种执行环境:全局执行环境与函数执行环境;
4.js执行环境都会被放入一个栈中;
5.作用域链:提供了一套标识符访问的规则,保证标识符有序访问。访问标识符的时候,里面没有可以往外面找,层层往外找,直到window,找到了就停止,找不到就报错;
2.作用域的分类
全局作用域
函数作用域(局部作用域)
块级作用域(ES6新增的)
3.箭头函数
语法
let或者const 函数名=(形参)=>{js代码}
可以省略的情况:
1.参数有且只有一个:可以省略小括号
2.只有一句代码:可以省略花括号,并且必须同时省略return,自动return
4.闭包
1.跨作用域访问变量,形成闭包,闭包是一种作用域的体现
常见的闭包写法:父函数嵌套子函数,子函数访问父函数的变量,把子函数返回或挂载在window上
2.闭包的作用:
实现早期的模块化开发,把所有变量隐藏在内部,对外暴露了统一的访问接口
隐藏变量,避免全局污染
3.闭包的缺点
一旦形成闭包,$变量就不会被内存释放,内存开销大,可能会形成内存泄漏,不建议过多使用
js有垃圾回收机制,形成闭包之后$变量不会被垃圾回收机制销毁
|