相关疑难解决方法(0)

JSlint错误'不要在循环中创建函数'.引出有关Javascript本身的问题

我有一些代码在循环中调用匿名函数,类似于这个伪示例:

for (i = 0; i < numCards; i = i + 1) {
    card = $('<div>').bind('isPopulated', function (ev) {
        var card = $(ev.currentTarget);
        ....
Run Code Online (Sandbox Code Playgroud)

JSLint报告错误"不要在循环中创建函数".我喜欢保持我的代码JSLint干净.我知道我可以将匿名函数移出循环并将其作为命名函数调用.除此之外,这是我的问题:

Javascript解释器是否真的会为每次迭代创建一个函数实例?或者只有一个函数实例"已编译"并且重复执行相同的代码?也就是说,将函数移出循环的JSLint"建议"实际上是否会影响代码的效率?

javascript jslint

28
推荐指数
2
解决办法
9395
查看次数

for循环中的闭包

循环中的闭包导致我出现问题.我想我必须创建另一个函数来返回一个函数来解决问题,但我无法使用我的jQuery代码.

以下是简化形式的基本问题:

function foo(val) {
  alert(val);
}

for (var i = 0; i < 3; i++) {
  $('#button'+i).click(function(){
    foo(i);
  });
}
Run Code Online (Sandbox Code Playgroud)

自然地点击三个按钮中的任何一个都会发出警告说3.我想要的功能是点击按钮1将发出警告说1,按钮2会说2等.

我该怎么做呢?

javascript jquery closures loops

12
推荐指数
3
解决办法
2388
查看次数

jQuery for循环动态值

我遇到了以下循环的问题:

for (var i = 0; i < dataElements; ++i){
  d=document.createElement('div');
  $(d).addClass('overviewbit')
  .appendTo('.overview')
  .click(function(){
    id = i;
  });
}
Run Code Online (Sandbox Code Playgroud)

每个Div都将id设置为循环的最高值,但我应该是创建时得到的确切值.所以第一个div应该设置为1,第二个div应该设置为2,依此类推.我希望你能理解我的问题并帮助我找到解决方案.

jquery for-loop

2
推荐指数
1
解决办法
5750
查看次数

标签 统计

javascript ×2

jquery ×2

closures ×1

for-loop ×1

jslint ×1

loops ×1