今天做东西的时候遇到的问题
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);
}
}
问题就解决了!
分享到:
相关推荐
# 外层函数负责分割作用域,内层函数才是闭包提供的功能。 外层函数返回内层函数的引用,供外部使用。 def my_line(k, b): # k,b只在my_line函数以及create_y函数内部有效,在外部无效。 比用全局变量节省资源。 ...
像这种内层函数引用了外层函数的变量(参数也算变量),然后返回内层函数的情况,称为闭包(Closure)。在函数内部定义的函数和外部定义的函数是一样的,只是他们无法被外部访问。 闭包的特点是返回的函数还引用了...
:对于一个嵌套定义的函数,外层的函数的返回值是内层函数,而在内层函数中又引用了外层函数的局部变量,在外层函数执行后,其局部变量并非被回收,而会同返回的内层函数一同存在,而这一现象被称为闭包(closure)。...
– 内嵌函数必须引用外部函数中变量。 – 外部函数返回值必须是内嵌函数。 闭包函数的调用方式: 变量 = 外部函数名(参数) 变量(参数) 函数名变量存储着函数内存地址 def test(): print("这是test函数") print(test)...
闭包就是由其他函数动态生成并返回的函数,通俗地讲,在一个函数的内部,还有一个“内层”的函数,这个“内层”的函数是被返回的,它可以访问其创建者的局部命名空间中的变量。 下面是一个非常简单的例子: # ...
如果在一个内部函数里,对一个外部作用域(但不是全局作用域)的变量进行引用,那么内部函数就被称为闭包(closure),而这个被内部函数引用的变量则被成为自由变量 闭包和函数调用没多少相关,而是关于使用定义在...
本文实例讲述了Python高级特性之闭包与装饰器。分享给大家供大家参考,具体如下: 闭包 ...(2)闭包就是一个嵌套定义的函数,在外层运行时才开始内层函数的定义,然后将内部函数的引用传递函数外的对象
然后,在一个嵌套函数中,内层函数能够访问在外层函数中定义的局部变量: >>> def foo(): a = 'free var' def bar(): print(a) return bar >>> foo()() free var 闭包 上面的嵌套函数就是闭包。 闭包 是指延伸...
官方解释 “闭包”是一个拥有许多变量和绑定了这些变量的环境表达式(通常是一个函数),因而这些... //内层函数b function b(){ //引用外层临时变量i alert(++i); } //执行结果,返回内层函数b return b; }
2、外层函数的返回值是内层函数的函数名 3、内层嵌套函数对外部作用域有一个非全局变量的引用 闭包的作用: 实现数据锁定 装饰器的作用: 就是为已经存在的对象添加额外的功能。 常用场景: 插入日志、性能测试、...
Python的作用域一共有4种,分别是:L(Local):最内层,包含局部变量,比如一个函数/方法内部。E(Enclosing):包含了非局部(non-local)也非全局(non-global)的变量。比如两个嵌套函数,一个函数(或类) A 里面又...
闭包是JavaScript中一个重要的特性,其最大的作用在于保存函数运行过程中的信息。在JavaScript中,闭包的诸多特性源自函数调用过程中的作用域链上。 函数调用对象与变量的作用域链 对于JavaScript中的每一次...
5,闭包 闭包意味着内层的函数可以引用存在于包围它的函数内的变量,即使外层函数的执行已经终止。 让我们先来看一个闭包的例子。 [Ctrl+A 全选 注:如需引入外部Js需刷新才能执行] 代码①是处于函数内层,不过它...
def inner_func(age): # 内层函数 print('name: ', name, ', age: ', age) return inner_func # 注意此处要返回,才能体现闭包 bb = func('jayson') # 将字符串传给func函数,返回inner_func并赋值给变量 bb(28) ...
闭包就是外层函数的作用域(AO)对象被内层函数所引用,无法被释放。 上面那句话听起来可能不是很理解,本人在之前写过一篇Python 闭包小记》的关于 Python 闭包的一些知识的文章,里面写了百度百科对于闭包的理解,...
如果没有ref,out则默认为值传递,虽然可以在方法中修改这个参数的值,但是修改后的值不会还会到调用该方法的程序中. params :params 关键字可以指定在参数数目可变处采用参数的方法参数 ref :引用传递 out : 7, ...
例1 function sayHello(name) { var text = 'Hello ' + name;...作为内层函数,可以访问外层函数sayHello()中的text变量。 例2 function sayHello2(name) { var text = 'Hello ' + name; // 局
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文件内容读写示例 ...
这里所说的空值,实际上也包括那些并不存在的变量,对于一个Java的 null值而言,我们认为这个变量是存在的,只是它的值为null,但对于FreeMarker模板而言,它无法理解null值,null值和不存在的变 量完全相同. 为了处理缺失...
书中专门为学生提供了一个用C语言编写的实习项目,包括前端和后端设计,学生可以在一学期内创建一个功能完整的编译器。 本书适用于高等院校计算机及相关专业的本科生或研究生,也可供科研人员或工程技术人员参考。...