首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

js动态绑定事件,无法使用for循环中变量i的问题

❝小闫语录:我一直在幻想,那些伟大的预言家都来自未来,那些畅销小说家都是真实经历过... ❞ 每天不是在写 bug,就是在解 bug 的路上~更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选...』 1.问题描述 在一个 for 循环中,我动态给一堆 a 标签绑定 onclick 事件时,发现点击事件不正确。...[i].onclick = function() { alert(i); }; } 我需要的是,点击第一个链接,弹出 0,点击第二个链接,弹出 1......以此类推。...答:那是因为事件函数是一个匿名函数,此函数会在 for 循环执行之后调用。调用时,发现内部没有定义变量 i ,所以就去外面找一下,发现外层有,就取外层的值了,但是为什么是 5 呢?...那是因为 for 循环的结束条件是 i 不满足 i变量 i 的值就是 5,匿名函数到外层取值正好取到了它。

3.9K10

java递归和迭代_Java中的迭代与递归

的方式是:先计算1乘以2,而后用其结果乘以3,再用的到的结果乘以4….一直乘到N。在程序实现时,可以定义一个计数器,每进行一次乘法,计数器都自增一次,直到计数器的值等于N截至。...代码如下: 代码二 int factorial (int n) { int product = 1; for(int i=2; i product *= i; } return product; }...在进行每一步计算时,只要要知道当前结果(product)和i的值即可以了。这种计算形式称之为迭代。迭代有这样几个条件:1、有一个有初始值的变量。2、一个说明变量值如何升级的规则。3、一个结束条件。...( 循环三要素:循环变量、循环体和循环终止条件 )。和递归一样。时间要求随着输入的增长呈线性的可以叫做线性迭代。...尤其是遇到一个比较复杂的场景的时候。但是,代码的难以了解带来的有点也比较显著。迭代的效率比递归要高,并且在空间消耗上也比较小。 递归中肯定有迭代,但是迭代中不肯定有递归,大部分可以相互转换。

2.1K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python的延迟绑定是什么?

    这意味着如果外部函数的变量在内部函数被调用之前被改变了,内部函数将使用新的变量值,而不是定义时的值。这种行为可能会导致一些困惑和错误,特别是在使用嵌套函数进行编程时。...return funcsfor func in outer(): print(func())输出结果为:python 代码解读复制代码12345在这个版本中,每个内部函数都有一个默认参数 number,它的默认值是外部循环的...由于默认参数的值在内部函数被定义时就被确定了,所以每个内部函数都绑定了不同的变量值。...因此,当我们迭代这些函数并传递 2 作为参数时,每个函数都会乘以最后一个 i 的值,也就是 3,所以结果会是 [6, 6, 6, 6]。...这样,当我们迭代这些函数并传递参数 2 时,每个函数都会乘以它们自己独立的 i 值,而不是最后一个 i 的值。

    10110

    C语言代码优化的一些经验及小技巧(三)

    ,原因是代码不用每次循环需要检查和增加i的值。...\n"); } 假如待查数据位于第23个位置上,程序便会执行23次,从而节省9977次循环。 使用位运算替代四则运算 在许多古老的微处理器上, 位运算比加减运算略快, 通常位运算比乘除法运算要快很多。...所以通常乘以或除以2n可以使用位运算来代替四则运算,如 a = a * 8; a = a / 8; a = a % 8; 修改为: a = a << 3; a = a >> 3; a = a & 7;.../* etc */ }; long factorial(int i) { return factorial_table[i]; } 使用复合赋值语句 增加一个变量的值有两种方式,如:a = a...存在两种增加一个变量值的方法有何意义呢?K&R C设计者认为复合赋值符可以让程序员把代码写得更清楚些。另外,编译器可以产生更为紧凑的代码。

    2.2K21

    机器学习算法实现解析——liblbfgs之L-BFGS算法

    2.3.5、循环求解的过程 循环的求解过程从for循环开始,在for循环中,首先需要利用线搜索策略进行最优的步长选择,其具体的过程如下所示: /* Store the current position...and gradient vectors. */ // 存储当前的变量值和梯度值 veccpy(xp, x, n);// 将当前的变量值复制到向量xp中 veccpy(gp, g, n);// 将当前的梯度值复制到向量...x和向量g,因此从xp和gp中恢复变量值和梯度值 /* Revert to the previous point. */ veccpy(x, xp, n); veccpy(g,...g - gp,gp为上一代的值,g为当前的值 两个循环 // 通过拟牛顿法计算Hessian矩阵 // L-BFGS的两个循环 j = end; for (i = 0;i i) {...\gamma_{i}. */ vecdot(&beta, it->y, d, n); beta /= it->ys;// 乘以rho /* \gamma_{i+1} = \gamma

    1.4K60

    MariaDBMySQL中的变量

    在MySQL/MariaDB中有好几种变量类型:用户自定义变量、系统变量、一般的临时变量(即本地变量,或称为局部变量)。...只有本用户才能引用自身的用户变量,其他用户无法引用,且当用户退出会话时,用户变量自动销毁。 用户变量使用"@"开头,用户变量可以直接赋值,无需事先声明。在引用未赋值的用户变量时,该变量值为null。...设置全局系统变量对已经打开的连接无效,但是其他已经打开的连接可以查看到设置后的全局系统变量值。 系统变量按照是否允许在运行时修改,还分为动态变量和静态变量。...在mysql中不支持数据类型的锚定功能。...如果游标中的ROW TYPE OF变量是定义在一个循环之中,则数据类型在循环的开头就已经获取,且之后的循环不再改变。

    2.3K10

    VBA新手教程:工欲善其事必先利其器(2)

    For语法 For 变量 = 开始值 to 结束值 …… Next For,循环开始的标志,第一次循环,变量最初会被赋值为“开始值”;从第二次开始,变量每次会被+1,然后与结束值比较,若变量值循环;如果变量值>结束值(这有个伏笔),则跳出循环。...特殊的语法——倒序 还记得刚才的伏笔吗? “如果变量值>结束值,则跳出循环” 这个表述上是非常不准确的。 语法 For 变量 = 起始值 to 结束值 step 步长 Next 步长是什么意思呢?...所以当step 的步长填写为-1时,会发生什么效果! 没错!变量i的值,每下一次循环,就比当前值减少1。...那外面i循环,循环了100次,是不就是将1加到100的和乘以了100! ? 注意 1、每一个For,对应一个Next。 2、嵌套关系的For之间,不能用相同的变量,会报错!

    88230

    MySQL数据库,从入门到精通:第十六篇——MySQL变量、流程控制和游标详解

    本文将深入剖析MySQL中变量、流程控制和游标的基本概念,包括系统变量、用户变量、定义条件与处理程序,流程控制中的分支结构和循环结构,以及游标的使用方法和步骤等。...会话期间,MySQL服务实例会在MySQL服务器内存中生成与该会话对应的会话系统变量,这些会话系统变量的初始值是全局系统变量值的复制。...如下图: 全局系统变量针对于所有会话(连接)有效,但不能跨重启 会话系统变量仅针对于当前会话(连接)有效。会话期间,当前会话对某个会话系统变量值的修改,不会影响其他会话同一个会话系统变量的值。...会话 1 对某个全局系统变量值的修改会导致会话 2 中同一个全局系统变量值的修改。...> 15000; 这里我们就可以通过游标来操作数据行,如图所示此时游标所在的行是“108”的记录,我们也可以在结果集上滚动游标,指向结果集中的任意一行。

    24810

    Python 循环结结构

    while 条件表达式: 循环的内容 [变量的变化] 格式2: while 条件表达式: 循环的内容 [变量的变化]...),()} 集合中有元组 字典的特殊使用 格式3: for 变量 in 容器: python代码,可以在此使用变量 else: 循环结束是执行的代码...执行以上脚本输出结果为: 当前字母为 : R 当前字母为 : u 当前字母为 : n 当前字母为 : o 当前字母为 : o 当期变量值为 : 10 当期变量值为 : 9 当期变量值为 : 8 当期变量值为...执行以上脚本输出结果为: 当前字母 : R 当前字母 : u 当前字母 : n 当前字母 : b 当前变量值 : 9 当前变量值 : 8 当前变量值 : 7 当前变量值 : 6 当前变量值 : 4 当前变量值...: 3 当前变量值 : 2 当前变量值 : 1 当前变量值 : 0 Good bye!

    83410

    shell编程

    当前用户 3.显示当前shell中所有的变量:set 4.2 变量的定义 基本语法 1.定义变量:变量名=变量值 2.撤销变量:unset 变量名 3.声明静态变量:readonly 变量名...变量名=变量值 将shell变量输出给环境变量 变量名=变量值 export 变量名 2.source 文件 让修改后的配置信息立即生效 3.echo $变量值 查看环境变量的值...遍历 基本语法 for 变量 in 值1 值2 值3 do 代码 done 快速入门 编写foreach.sh: 打印命令行输入的参数[这里可以看出$*和$@的区别] 循环 基本语法 for ((初始值...;循环条件;变量变化)) 特殊: ((i=1;ii++)) do 代码 done 快速入门 编写for.sh: 从1加到100,并输出结果 10.4 while循环 基本语法 while...return xxx; } 调用: 函数名 值1 值2 快速入门 编写func.sh: 用函数的形式,计算两个参数的和 13 shell综合案例 在/usr/sbin下编写mysql_db_backup.sh

    53220

    Python条件语句和循环语句简单使用方法

    1.1 简单的语句组你也可以在同一行的位置上使用if条件判断语句,如下实例: var = 100 if ( var == 100 ) : print ("变量 var 的值为100") print...(i) # 输出1~10 i += 1 if i > 10: # 当i大于10时跳出循环 break无限循环如果条件判断语句永远为 true,循环将会无限的执行下去...以上实例执行结果:当前字母 : P当前字母 : y当前字母 : t当前变量值 : 10当前变量值 : 9当前变量值 : 8当前变量值 : 7当前变量值 : 6Good bye!...以上实例执行结果:当前字母 : P当前字母 : y当前字母 : t当前字母 : o当前字母 : n当前变量值 : 9当前变量值 : 8当前变量值 : 7当前变量值 : 6当前变量值 : 4当前变量值 :...3当前变量值 : 2当前变量值 : 1当前变量值 : 0Good bye!

    1.6K10

    机器学习算法实现解析——liblbfgs之L-BFGS算法

    2.3.5、循环求解的过程 循环的求解过程从for循环开始,在for循环中,首先需要利用线搜索策略进行最优的步长选择,其具体的过程如下所示: /* Store the current position...and gradient vectors. */ // 存储当前的变量值和梯度值 veccpy(xp, x, n);// 将当前的变量值复制到向量xp中 veccpy(gp, g, n);// 将当前的梯度值复制到向量...x和向量g,因此从xp和gp中恢复变量值和梯度值 /* Revert to the previous point. */ veccpy(x, xp, n); veccpy(g,...g - gp,gp为上一代的值,g为当前的值 两个循环 // 通过拟牛顿法计算Hessian矩阵 // L-BFGS的两个循环 j = end; for (i = 0;i i) {...\gamma_{i}. */ vecdot(&beta, it->y, d, n); beta /= it->ys;// 乘以rho /* \gamma_{i+1} = \gamma

    1.8K20

    物联网工程师技术之C语言运算符

    本章重点 • 赋值运算符 • 算术运算符 • 比较运算符 • 逻辑运算符 大家学习了上一章中介绍的变量和常量,现在已经可以将数据保存在程序中了,下一步的工作就是操作并利用保存的数据。...脚下留心:变量与变量值 大家可能会有疑问:变量不就是变量本身吗?为什么会有“变量值”这一说法呢?应当注意的是,一个变量在不同时刻可以对应多个不同的值,这意味着“变量”和“变量值”并不是一一对应的关系。...执行结束后,变量variable仍然是开始时声明的那个变量,但是在整个执行过程中,它的值(即变量值)发生了三次变化,因此变量和变量值是不同的两个概念。 赋值语句还有其它的写法吗?...为变量 x 指定一个初始值0,每执行一次循环代码,x的值就增加1。...每次执行循环代码之前,程序会检查变量x是否小于10,如果小于10,则执行循环代码,否则结束循环过程,继续执行后面的语句。第五章将对循环语句做进一步介绍,这里只要简单了解while语句的使用方法即可。

    7510

    liblbfgs中L-BFGS算法的实现

    vectors. */ // 存储当前的变量值和梯度值 veccpy(xp, x, n);// 将当前的变量值复制到向量xp中 veccpy(gp, g, n);// 将当前的梯度值复制到向量gp中...x和向量g,因此从xp和gp中恢复变量值和梯度值 /* Revert to the previous point. */ veccpy(x, xp, n); veccpy(g, gp, n);...循环的终止条件 在选择了最优步长过程中,会同时对变量进行更新,第二步即是判断此时的更新是否满足终止条件,终止条件分为以下三类: 是否收敛 vec2norm(&xnorm, x, n);// 平方和的开方...gp为上一代的值,g为当前的值 两个循环 // 通过拟牛顿法计算Hessian矩阵 // L-BFGS的两个循环 j = end; for (i = 0;i i) { j = (j..._{i}. */ vecdot(&beta, it->y, d, n); beta /= it->ys;// 乘以rho /* \gamma_{i+1} = \gamma_{i} + (\alpha

    1.1K30

    MySQL基础-变量流程控制游标

    MySQL基础-变量/流程控制/游标 一、变量 在MySQL数据库的存储过程和函数中,可以使用变量来存储查询或计算的中间结果数据,或者输出最终的结果数据 在 MySQL 数据库中,变量分为 系统变量...以及 用户自定义变量 1、系统变量 变量由系统定义,不是用户定义,属于 服务器 层面 启动MySQL服务,生成MySQL服务实例期间,MySQL将为MySQL服务器内存中的系统变量赋值,这些系统变量定义了当前...:修改MySQL 配置文件 ,继而修改MySQL系统变量的值(该方法需要重启MySQL服务) 方式2:在MySQL服务运行期间,使用“set”命令重新设置系统变量的值 #为某个系统变量赋值 #方式1:...SET @@global.变量名=变量值; #方式2: SET GLOBAL 变量名=变量值; #为某个会话变量赋值 #方式1: SET @@session.变量名=变量值; #方式2: SET SESSION...变量名=变量值; 2、用户变量 用户变量是用户自己定义的,作为 MySQL 编码规范,MySQL 中的用户变量以 一个“@” 开头 根据作用范围不同,又分为 会话用户变量 和 局部变量 会话用户变量:

    2.2K70

    java voliate_voliate关键字及其示例

    与synchronized相似之处在于 如图线程A修改了volatile变量b的值,然后线程B读取了改变量值,那么所有A线程在写入变量b值前可见的变量值,在B读取volatile变量b后对线程B都是可见的...首先运行代码,可以看到,尽管将变量设置了stop,test线程并没有如预期的停止.说明,test线程内的i的并没有被修改,test只是在start时将i变量拷贝到了线程自有的一块空间内,与主线内的i变量互不影响...将voliate关键字放在变量i的声明上,运行发现程序正常停止.可见变量i在任何一个线程内都是可见的,当变量i在主线程被修改时,子线程立即获得了被更新的值....最开始的代码,一直处于试了循环中,CPU处于一直被饱受占用的时候,这个时候CPU没有时间,JVM也不能强制要求CPU分点时间去取最新的变量值。...run方法里面休息了3秒,cpu有充足的空闲时间去取变量的最新值,所以循环执行一次就停止了。

    37510
    领券