采用自执行的匿名函数解决for循环使用闭包的问题
这段代码输出的是10个10而不是期望的0到9,因为闭包内是对i的引用,然后函数执行时i已经变成了10
function f1(){ for(var i = 0; i < 10; i++) { setTimeout(function() { alert(i); }, 1000); } } f1();
解决以上的问题可以采用自执行的匿名函数
function f2(){ for(var i = 0; i < 10; i++) { (function(e) { setTimeout(function() { alert(e); }, 1000); })(i); } } f2();
这里的匿名函数将i作为参数,这里的e会有i的一个拷贝,而引用时是对e的引用,这就避免了上述的问题
相关推荐
-
采用自执行的匿名函数解决for循环使用闭包的问题
这段代码输出的是10个10而不是期望的0到9,因为闭包内是对i的引用,然后函数执行时i已经变成了10 function f1(){ for(var i = 0; i < 10; i++) { setTimeout(function() { alert(i); }, 1000); } } f1(); 解决以上的问题可以采用自执行的匿名函数 function f2(){ for(var i = 0; i < 10; i++) { (function(e) { setTimeout(function
-
JS立即执行的匿名函数用法分析
本文实例讲述了JS立即执行的匿名函数用法.分享给大家供大家参考,具体如下: ;(function() {})(); 1.他叫做立即运行的匿名函数(也叫立即调用函数) 2.当一个匿名函数被括起来,然后再在后面加一个括号,这个匿名函数就能立即运行起来!有木有很神奇哦~ 3.要使用一个函数,我们就得首先声明它的存在.而我们最常用的方式就是使用function语句来定义一个函数 4.Function 对象 Function对象是JavaScript里面的固有对象,所有的函数实际上都是一个Function
-
C# 使用匿名函数解决EventHandler参数传递的难题
首先,动态生成PictureBox,很简单, PictureBox box = new PictureBox() ; box.ImageLocation = imageRoad ; 其次,给PictureBox添加右键菜单,也不难, ContextMenu menu = new ContextMenu(); box.ContextMenu = menu ; 然后,要给右键菜单增加"删除"项,并实现删除图片事件.这个,比较麻烦. MenuItem item = new MenuItem(
-
浅析Javascript匿名函数与自执行函数
函数是JavaScript中最灵活的一种对象,这里只是讲解其匿名函数的用途.匿名函数:就是没有函数名的函数. 函数的定义,大致可分为三种方式: 第一种:这也是最常规的一种 function double(x){ return 2 * x; } 第二种:这种方法使用了Function构造函数,把参数列表和函数体都作为字符串,很不方便,不建议使用. var double = new Function('x', 'return 2 * x;'); 第三种: var double = function(
-
JS匿名函数和匿名自执行函数概念与用法分析
本文实例讲述了JS匿名函数和匿名自执行函数概念与用法.分享给大家供大家参考,具体如下: 1. 匿名函数的常见场景 js中的匿名函数是一种很常见的函数类型,比较常见的场景: <input type="button" value="点击" id="btn"> <script type="text/javascript"> //匿名函数的第一种情形 var btn=document.querySelector
-
JavaScript 匿名函数和闭包介绍
匿名函数:没有名字的函数; 闭包:可访问一个函数作用域里的变量的函数; 一 匿名函数 // 普通函数 function box(){ // 函数名是box; return 'Lee'; } box(); // =>Lee; 调用函数; // 匿名函数 function(){ // 匿名函数,会报错; return 'Lee'; } // 通过表达式自我执行 (function(name){ console.log(name); // =>Lee; })("Lee"); //
-
不使用 JS 匿名函数理由
匿名函数的基本形式为(function(){...})(); 前面的括号包含函数体,后面的括号就是给匿名函数传递参数并立即执行之 匿名函数的作用是避免全局变量的污染以及函数名的冲突 无论你在什么时候读代码,您都必须注意到匿名函数.有时它们被称为 lambda,有时是匿名函数,不管怎样,我认为他们是不好使用的. 如果你不知道匿名函数是什么,这里有一个引语: 匿名函数是一种在运行时动态声明的函数.它们之所以被称为匿名函数是因为不同于普通函数,它们并没有函数名 . - Helen Emerson, H
-
js中匿名函数的创建与调用方法分析
本文实例分析了js中匿名函数的创建与调用方法.分享给大家供大家参考.具体实现方法如下: 匿名函数就是没有名字的函数了,也叫闭包函数(closures),允许 临时创建一个没有指定名称的函数.最经常用作回调函数(callback)参数的值,很多新手朋友对于匿名函数不了解.这里就来分析一下. function 函数名(参数列表){函数体;} 如果是创建匿名函数,那就应该是: function(){函数体;} 因为是匿名函数,所以一般也不会有参数传给他. 为什么要创建匿名函数呢?在什么情况下会使用到匿
-
PHP回调函数及匿名函数概念与用法详解
本文实例讲述了PHP回调函数及匿名函数概念与用法.分享给大家供大家参考,具体如下: 1.回调函数 PHP的回调函数其实和C.Java等语言的回调函数的作用是一模一样的,都是在主线程执行的过程中,突然跳去执行设置的回调函数: 回调函数执行完毕之后,再回到主线程处理接下来的流程 而在php调用回调函数,不想c以及java那样直接使用函数名作为函数参数,而是在php中使用函数对应的字符串名称执行 1.1.无参数回调 <?php //无参数回调 function callback(){ echo 'ex
-
浅析PHP中的闭包和匿名函数
闭包是指在创建时封装周围状态的函数.即使闭包所在的环境不存在了,闭包中封装的状态依然存在. 匿名函数就是没有名称的函数.匿名函数可以赋值给变量,还能像其他任何PHP对象那样传递.不过匿名函数仍是函数,因此可以调用,还可以传入参数.匿名函数特别适合作为函数或方法的回调. 注意:理论上讲,闭包和匿名函数是不同的概念.不过,PHP将其视作相同的概念.所以,我们提到闭包时,指的也是匿名函数,反之亦然. PHP闭包和匿名函数使用的句法与普通函数相同,但闭包和匿名函数其实是 伪装成函数的对象(Closure
随机推荐
- 25个常用PowerShell命令总结
- 收集的48个Shell脚本小技巧
- 定制全新的Win2000另类“位置条”
- C语言实现类似wget的进度条效果
- js判断文件格式及大小的简单实例(必看)
- YII框架中搜索分页jQuery写法详解
- 使用python调用浏览器并打开一个网址的例子
- 解析MSSQL跨数据库查询的实现方法
- jquery的$getjson调用并获取远程的JSON字符串问题
- Ruby中使用设计模式中的简单工厂模式和工厂方法模式
- SVN限制message字符个数及格式的实例
- 数据转换冲突及转换过程中大对象的处理
- 浅谈javascript中遇到的字符串对象处理
- FLEX内存优化技巧集合
- 布线120台电脑的网吧布线实战详解
- SpringMVC基于注解的Controller详解
- 详解NSString 与C++ string字符串的互转
- 第1次亲密接触PHP5(1)
- 使用php 获取时间今天明天昨天时间戳的详解
- Android开发之软键盘用法实例分析