内部函数和闭包
来源:互联网 发布:网站软件合集 编辑:程序博客网 时间:2024/06/17 01:25
内部函数(函数嵌套)
JavaScript 允许在一个函数内部定义函数,这一点我们在之前的 makePerson() 例子中也见过。关于 JavaScript 中的嵌套函数,一个很重要的细节是它们可以访问父函数作用域中的变量:
function betterExampleNeeded() { var a = 1; function oneMoreThanA() { return a + 1; } return oneMoreThanA();}
如果某个函数依赖于其他的一两个函数,而这一两个函数对你其余的代码没有用处,你可以将它们嵌套在会被调用的那个函数内部,这样做可以减少全局作用域下的函数的数量,这有利于编写易于维护的代码。
这也是一个减少使用全局变量的好方法。当编写复杂代码时,程序员往往试图使用全局变量,将值共享给多个函数,但这样做会使代码很难维护。内部函数可以共享父函数的变量,所以你可以使用这个特性把一些函数捆绑在一起,这样可以有效地防止“污染”你的全局命名空间——你可以称它为“局部全局(local global)”。虽然这种方法应该谨慎使用,但它确实很有用,应该掌握。
闭包
一个闭包就是一个函数和被创建的函数中的作用域对象的组合。
闭包允许你保存状态——所以它们通常可以代替对象来使用。
闭包是 JavaScript 一个非常重要的特性,这意味着当前作用域总是能够访问外部作用域中的变量。 因为函数 是 JavaScript 中唯一拥有自身作用域的结构,因此闭包的创建依赖于函数。
匿名包装器(其实就是我们通常说的自执行匿名函数)。
for(var i = 0; i < 10; i++) { (function(e) { setTimeout(function() { console.log(e); }, 1000); })(i);}
或者用以下方法代替
for(var i = 0; i < 10; i++) { setTimeout((function(e) { return function() { console.log(e); } })(i), 1000)}
-----------------------------------------------------------------------------------
今天在看回调函数看到又一个关于闭包的解释,在这里摘录一下。
有些语言不但可以传递函数,函数里面又用到一些外部信息(包括data,code)。那些语言可以将函数跟函数所用到的信息一起传递存储。这种将函数和它所用的信息作为一个整体,就为闭包。
- 内部函数和闭包
- python-内部函数,闭包
- 【python】*函数:全局局部变量、内部函数、闭包
- 函数和闭包
- 函数和函数闭包
- 《零基础入门学习Python》学习过程笔记【020函数的局部变量和全全局变量内部函数和闭包】
- 内部函数和外部函数
- 内部函数和外部函数
- 内部函数和外部函数
- 内部函数和外部函数
- 内部函数和外部函数
- python函数的闭包问题(内部函数与外部函数详述)
- 匿名函数和闭包
- 嵌套函数和闭包
- swift 函数和闭包
- Swift函数和闭包
- 匿名函数和闭包
- 匿名函数和闭包
- kafka实战最佳经验(文末福利)
- js中数据类型检测
- keepalive安装和配置
- Git 一些错误的解决方法
- 线性回归和局部加权回归
- 内部函数和闭包
- STL常用算法: replace.replace_copy.replace_if.replace_copy_if
- 将三个数按从大到小输出
- html
- 圆桌讨论:根据周期理论,新的“黄金时代”是否即将到来?
- 20 年后,比特币会是什么样子?这里有 13 个预测
- CDN引入固定版本方法
- java学习的问题
- AI 是友非敌?自杀预防技术已成功挽救 25 人生命