JavaScript 第二天(二)
一. JavaScript 的作用域
(一)作用域的含义:
作用域:您有权访问的变量集合
(二)全局变量与局部变量
1.全局变量:函数之外、在全局中定义的;网页的所有脚本和函数都能够访问它。全局作用域是 window。所有全局变量属于 window 对象。
2.局部变量:函数中定义的, 只能在该函数内部访问
3.自动全局:你为一个尚未定义的变量赋值,该变量自动被定义为全局变量
二. JavaScript闭包的产生、作用与危害
(一)什么是闭包,闭包怎么产生的?
闭包就是能够读取其他函数中的变量
闭包的产生:函数套函数,里面的函数可以访问到外边函数定义的变量
闭包的原理:闭包的实现原理,其实是利用了作用域链的特性,我们都知道作用域链就是在当前执行环境下访问某个变量时,如果不存在就一直向外层寻找,最终寻找到最外层也就是全局作用域,这样就形成了一个链条。
举个例子:
输出
(二)闭包的作用
1.实现公有变量,做累加器,自增
2.可以做缓存(外部不可见)
3.可以实现封装,属性私有化
4.模块化开发,防止污染全局变量
5.内存泄露,访问不到的变量占着内存(ie浏览器的bug)
1.举个例子
输出:
闭包解决
输出: