栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

循环中的函数(返回另一个函数)如何工作?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

循环中的函数(返回另一个函数)如何工作?

当您将功能分配给单击处理程序时,将创建一个闭包。

基本上,当您嵌套函数时会形成一个闭包,内部函数即使在其父函数已经执行后,也可以引用其外部封装函数中存在的变量。

在执行click事件时,处理程序将引用

i
变量具有的最后一个值,因为该变量存储在闭包中。

如您所见,通过包装单击处理程序函数以接受

i
变量作为参数,然后返回另一个函数(基本上创建另一个闭包),它可以按预期工作:

for ( var i = 0; i < 4; i++ ) {  var a = document.createElement( "a" );  a.onclick = (function(j) { // a closure is created    return function () {      alert(j);     }  }(i));  document.getElementById( "foo" ).appendChild( a );}

迭代时,实际上创建了4个函数,每个函数

i
在创建时都存储了对它的引用(通过传递
i
),该值存储在外部闭包中,并且在click事件触发时执行内部函数。

我使用以下代码段解释闭包(以及curry的一个非常基本的概念),我认为一个简单的示例可以使该概念更容易理解:

// a function that generates functions to add two numbersfunction addGenerator (x) { // closure that stores the first number  return function (y){ // make the addition    return x + y;  };}var plusOne = addGenerator(1), // create two number adding functions    addFive = addGenerator(5);alert(addFive(10)); // 15alert(plusOne(10)); // 11


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/420686.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号