<!DOCTYPE html><html><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width" /><title>闭包函数</title></head><body><script type="text/javascript">// 闭包函数是一个拥有许多变量和绑定了这些变量的环境的表达方式(通常是一个函数),因此这些变量也是该表达式的一部分。//// 闭包函数的特点如下。//// - 作为一个函数变量的一个引用,当函数返回时,其处于激活状态。// - 一个闭包就是当一个函数返回时,一个没有释放资源的栈区。//// 简单来说, JavaScript 允许使用内部函数,也就是函数定义和函数表达式位于另一个函数的函数体内,而且这些内部函数可以访问它们所在的外部函数中声明的所有局部变量、参数和其他内部函数。#当其中一个这样的内部函数在包含它们的外部函数之外被调用时,就会形成闭包。#////// 在下面的实例中,同一个函数两次运行返回两个闭包函数,每个闭包函数按照不同的初始值进入运算,互不干扰,//// fun1() 从 3 开始向上累加,fun2() 从 100 开始向上累加,两个函数相互之间不干扰。这种模式在开发游戏类算法时具有极大的遍历性。例如,举枪射击,第 1 颗子弹按照第 1 个角度飞行,第 2 颗按照第 2 个角度飞行,都调用同一个函数,每个函数返回的闭包都能保存初始的射击角度。这为程序开发提供了极大的便利。//// [source,javascript,linenums]// ----function myfun(i) {return function () { // <1>return ++i;}}var fun1 = myfun(3); // <2>var fun2 = myfun(100); // <3>for (i=0; i<5; i++) {console.log(fun1()); // <4>}for (i=0; i<5; i++) {console.log(fun2()); // <5>}// ----//// <1> 将一个匿名函数作为返回值,函数中保存了 i 的值// <2> 传入 3 为初始值,返回含有 3 的函数// <3> 传入 100 为初始值,返回含有 100 的函数// <4> 闭包运算从 3 开始累加,结果为 4~8// <5> 闭包运算从 100 开始累加,结果为 101~105</script></body></html>
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。