`
youzhibing
  • 浏览: 50349 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

闭包允许内层函数引用父函数中的变量,但是该变量是最终值,而不是变化的

阅读更多
今天做东西的时候遇到的问题
for(var k=0; k<piclength; k++){
		picList[k].onmouseover = function() {
			picMovement('ifocus_piclist',0,-225*k,5);		
			classNormal('ifocus_btn','ifocus_tx');
			classCurrent('ifocus_btn','ifocus_tx',k);
		}
	}

发现传过去的k始终等于piclength,而不是for循环的k
问题纠结了很久,各种alert调试,发现内部函数中的k是一个定值,等于piclength,为什么出现这种情况了?上网查了一下
http://www.cnblogs.com/rainman/archive/2009/05/04/1448899.html看到了此文,发现了我要的答案: 闭包允许内层函数引用父函数中的变量,但是该变量是最终值,究其原因,还得回到回调函数上
解决的问题在连接中也有了,我这也提供一种方法
for(var k=0; k<piclength; k++){
		picList[k].index = k;
		picList[k].onmouseover = function() {
			picMovement('ifocus_piclist',0,-225*this.index,5);		//不能直接传k
			classNormal('ifocus_btn','ifocus_tx');
			classCurrent('ifocus_btn','ifocus_tx',this.index);
		}
	}

问题就解决了!
分享到:
评论

相关推荐

    Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例

    # 外层函数负责分割作用域,内层函数才是闭包提供的功能。 外层函数返回内层函数的引用,供外部使用。 def my_line(k, b): # k,b只在my_line函数以及create_y函数内部有效,在外部无效。 比用全局变量节省资源。 ...

    Python 中的闭包、匿名函数、decorator 装饰器与python的偏函数

    像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。在函数内部定义的函数和外部定义的函数是一样的,只是他们无法被外部访问。 闭包的特点是返回的函数还引用了...

    python闭包与引用以及需要注意的陷阱

    :对于一个嵌套定义的函数,外层的函数的返回值是内层函数,而在内层函数中又引用了外层函数的局部变量,在外层函数执行后,其局部变量并非被回收,而会同返回的内层函数一同存在,而这一现象被称为闭包(closure)。...

    python之装饰器,多重装饰器,多层函数装饰器

    – 内嵌函数必须引用外部函数中变量。 – 外部函数返回值必须是内嵌函数。 闭包函数的调用方式: 变量 = 外部函数名(参数) 变量(参数) 函数名变量存储着函数内存地址 def test(): print("这是test函数") print(test)...

    Python闭包之返回函数的函数用法示例

    闭包就是由其他函数动态生成并返回的函数,通俗地讲,在一个函数的内部,还有一个“内层”的函数,这个“内层”的函数是被返回的,它可以访问其创建者的局部命名空间中的变量。 下面是一个非常简单的例子: # ...

    基于Python闭包及其作用域详解

    如果在一个内部函数里,对一个外部作用域(但不是全局作用域)的变量进行引用,那么内部函数就被称为闭包(closure),而这个被内部函数引用的变量则被成为自由变量 闭包和函数调用没多少相关,而是关于使用定义在...

    Python高级特性之闭包与装饰器实例详解

    本文实例讲述了Python高级特性之闭包与装饰器。分享给大家供大家参考,具体如下: 闭包 ...(2)闭包就是一个嵌套定义的函数,在外层运行时才开始内层函数的定义,然后将内部函数的引用传递函数外的对象

    实例详解Python装饰器与闭包

    然后,在一个嵌套函数中,内层函数能够访问在外层函数中定义的局部变量: &gt;&gt;&gt; def foo(): a = 'free var' def bar(): print(a) return bar &gt;&gt;&gt; foo()() free var 闭包 上面的嵌套函数就是闭包。 闭包 是指延伸...

    浅析javascript闭包 实例分析

    官方解释 “闭包”是一个拥有许多变量和绑定了这些变量的环境表达式(通常是一个函数),因而这些... //内层函数b function b(){ //引用外层临时变量i alert&#40;++i&#41;; } //执行结果,返回内层函数b return b; }

    python如何通过闭包实现计算器的功能

    2、外层函数的返回值是内层函数的函数名 3、内层嵌套函数对外部作用域有一个非全局变量的引用 闭包的作用: 实现数据锁定 装饰器的作用: 就是为已经存在的对象添加额外的功能。 常用场景: 插入日志、性能测试、...

    Python语言基础:作用域.pptx

    Python的作用域一共有4种,分别是:L(Local):最内层,包含局部变量,比如一个函数/方法内部。E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又...

    JavaScript中的闭包(Closure)详细介绍

    闭包是JavaScript中一个重要的特性,其最大的作用在于保存函数运行过程中的信息。在JavaScript中,闭包的诸多特性源自函数调用过程中的作用域链上。   函数调用对象与变量的作用域链   对于JavaScript中的每一次...

    JavaScript 中级笔记 第四章 闭包

    5,闭包 闭包意味着内层的函数可以引用存在于包围它的函数内的变量,即使外层函数的执行已经终止。 让我们先来看一个闭包的例子。 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 代码①是处于函数内层,不过它...

    Python闭包与装饰器原理及实例解析

    def inner_func(age): # 内层函数 print('name: ', name, ', age: ', age) return inner_func # 注意此处要返回,才能体现闭包 bb = func('jayson') # 将字符串传给func函数,返回inner_func并赋值给变量 bb(28) ...

    浅谈JavaScript闭包

    闭包就是外层函数的作用域(AO)对象被内层函数所引用,无法被释放。 上面那句话听起来可能不是很理解,本人在之前写过一篇Python 闭包小记》的关于 Python 闭包的一些知识的文章,里面写了百度百科对于闭包的理解,...

    c#学习笔记.txt

    如果没有ref,out则默认为值传递,虽然可以在方法中修改这个参数的值,但是修改后的值不会还会到调用该方法的程序中. params :params 关键字可以指定在参数数目可变处采用参数的方法参数 ref :引用传递 out : 7, ...

    通过示例彻底搞懂js闭包

    例1 function sayHello(name) { var text = 'Hello ' + name;...作为内层函数,可以访问外层函数sayHello()中的text变量。 例2 function sayHello2(name) { var text = 'Hello ' + name; // 局

    ActionScript开发技术大全

    29.2.1目录与文件引用 612 29.2.2目录与文件浏览 614 29.2.3目录与文件属性 615 29.2.4快速载入与保存 616 29.2.5目录与文件管理 617 29.2.6目录与文件管理示例 620 29.2.7文件内容读写 626 29.2.8文件内容读写示例 ...

    freemarker总结

    这里所说的空值,实际上也包括那些并不存在的变量,对于一个Java的 null值而言,我们认为这个变量是存在的,只是它的值为null,但对于FreeMarker模板而言,它无法理解null值,null值和不存在的变 量完全相同. 为了处理缺失...

    美国..现代编译原理C语言描述.高清版

    书中专门为学生提供了一个用C语言编写的实习项目,包括前端和后端设计,学生可以在一学期内创建一个功能完整的编译器。  本书适用于高等院校计算机及相关专业的本科生或研究生,也可供科研人员或工程技术人员参考。...

Global site tag (gtag.js) - Google Analytics