ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] # 5.1变量作用域 变量根据作用域的不同分为两种:全局变量和局部变量。 1.函数内部可以使用全局变量。 2.函数外部不可以使用局部变量。 3.当函数执行完毕,本作用域内的局部变量会销毁。 # 5.2什么是闭包 closure **闭包**(**closure**)指有权**访问**另一个函数作用域中**变量**的**函数**。----- JavaScript高级程序设计 简单理解就是,**一个作用域**可以**访问另外一个函数内部**的**局部变量**。 ![](https://img.kancloud.cn/29/ad/29ad9163ba18271a7e4c790b3f8a0e0a_1124x482.png) //闭包(closure) 指有权访问另一个函数作用域中变量的函数。 //一个作用域可以访问另外一个函数的局部变量 //我们fn外面的作用域可以访问fn内部的局部变量 //闭包的主要作用:延伸了变量的作用范围 ![](https://img.kancloud.cn/31/78/317834dd0bae28cc62a39f0e24df49a0_785x742.png) # 5.6闭包总结 ### 1.闭包是什么? 闭包是一个函数(一个作用域可以访问另外一个函数的局部变量) ### 2.闭包的作用是什么? 延伸变量的作用范围 # 5.5闭包案例 (立即执行函数()() ) 1.循环注册点击事件。 html ![](https://img.kancloud.cn/c4/52/c4527ab4a1d6f7c9087289997e6471d8_362x207.png) ## 1.循环注册点击事件。 ![](https://img.kancloud.cn/a1/8b/a18b33a12e7d4a4f2b021ab7215fa0dc_971x379.png) ## 1.循环注册点击事件。闭包面试(实验) (立即执行函数()() ) ![](https://img.kancloud.cn/e7/c1/e7c17cbbafb10e8abe8997e33e2ac3d8_1194x414.png) 1.循环注册点击事件。 ## 2.循环中的setTimeout()。 (立即执行函数()() ) ![](https://img.kancloud.cn/40/5c/405c9a2529eb782f7a167103d055e3c9_1087x370.png) ## 3.计算打车价格。 //打车起步价13(3公里内), 之后每多一公里增加5块钱. 用户输入公里数就可以计算打车价格 //如果有拥堵情况,总价格多收取10块钱拥堵费 // function fn() {}; // fn(); ![](https://img.kancloud.cn/26/05/2605a5ff7d536c849220b9ef95e65174_753x734.png)