javascript 常见的闭包问题的解决办法

 更新时间:2009年11月06日 00:15:04   作者:  
javascript 常见的闭包问题的解决办法,需要的朋友可以参考下。


[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

上段代码本意是在每个div上都加一个事件,即每当点击div时,就显示此div的相应序号。但是运行程序时我们会发现,不论点击那个,只会显示7,这是什么愿因呢。--这就是闭包的问题
原来 在js中,函数中在定义函数,就出现闭包了。此时外层函数中变量是可以在里层函数里利用的,即使外层函数结束。但是当外层中出现循环的时候,如果在里层函数中利用这个循环变量的话,会直接引用这个变量的最终值。
就像上述代码演示的一样。
如何解决呢。
可以利用匿名函数来加以解决。匿名函数会制动执行,我们可以利用这一特性,来产生一个作用域,生命一个变量,来引用外层的循环变量。
如代码所示:

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

由于在内层函数里只要出现循环变量的话 都是最终值,所以我们利用匿名函数 激发出一个作用域,在进入内层循环之前,有另一变量获得该循环变量的值,这一思想是处理闭包问题的精髓。

如下例子:此时并没有明显的for循环,但是 根据上述思想,可以立即加以解决 问题

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

解决后代码:

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

补充:看到有网友这样解决了问题:

[Ctrl+A 全选 注:引入外部Js需再刷新一下页面才能执行]

我个人的理解是 在进入内层循环之前 把id赋值给f,f在作为内层循环的参数,其思想应该是一样的.

相关文章

  • canvas仿iwatch时钟效果

    canvas仿iwatch时钟效果

    本文主要介绍了canvas仿iwatch时钟效果的实例,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • Js为表单动态添加节点内容的方法

    Js为表单动态添加节点内容的方法

    这篇文章主要介绍了Js为表单动态添加节点内容的方法,实例分析了js针对表单节点进行添加操作的常用技巧,需要的朋友可以参考下
    2015-02-02
  • js判断样式className同时增加class或删除class

    js判断样式className同时增加class或删除class

    用正则表达式判断多个class之间是否存在真正的class(前后空格的处理)然后增加class删除class,本文给予实现方法,感兴趣的朋友可以了解下,或许对你有所帮助
    2013-01-01
  • JavaScript中string转换成number介绍

    JavaScript中string转换成number介绍

    这篇文章主要介绍了JavaScript中string转换成number介绍,本文讲解了3种将string值转换成number的方法,需要的朋友可以参考下
    2014-12-12
  • js判断是否为ie的方法小结

    js判断是否为ie的方法小结

    这篇文章主要介绍了js判断是否为ie的方法,有需要的朋友可以参考一下
    2014-01-01
  • JS实现获取键盘按下的按键并显示在页面上的方法

    JS实现获取键盘按下的按键并显示在页面上的方法

    这篇文章主要介绍了JS实现获取键盘按下的按键并显示在页面上的方法,涉及JavaScript针对键盘事件及页面元素的相关操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-11-11
  • jsonp的简单介绍以及其安全风险

    jsonp的简单介绍以及其安全风险

    JSONP原理就是动态插入带有跨域url的script标签,然后调用回调函数,把我们需要的json数据作为参数传入,通过一些逻辑把数据显示在页面上,这篇文章主要给大家介绍了关于jsonp的简单介绍以及其安全风险的相关资料,需要的朋友可以参考下
    2022-01-01
  • JavaScript Event事件学习第一章 Event介绍

    JavaScript Event事件学习第一章 Event介绍

    Events是每一个JavaScript程序核心。什么是事件处理,它有什么问题和怎样写出跨浏览器的代码,我将在这一章做一个概述。我也会提供一些有精彩的关于事件处理程序的细节的文章。
    2010-02-02
  • JS中reduce和map的优雅写法分享

    JS中reduce和map的优雅写法分享

    这篇文章主要为大家详细介绍了JavaScript中一些reduce和map的优雅写法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-03-03
  • JavaScript脚本判断蜘蛛来源的方法

    JavaScript脚本判断蜘蛛来源的方法

    本篇文章给大家介绍js判断蜘蛛来源的方法,此方法的脚本是写在body的onload里面的,当页面进行加载时就进行判断,感兴趣的朋友一起看看吧
    2015-09-09

最新评论