javascript - 我的 javascript 闭包写得正确吗?

标签 javascript jquery closures

我在 jqgrid(一个 jquery 网格)中使用以下函数闭包来保留在名为“retainedChanges”的变量中进行分页时编辑的更改 - 这看起来不错吗?我打破了 javascript 中的任何良好做法; 代码工作正常只是想确保我不会引入将来可能会破坏的功能

 (function($){
      var retainedChanges;
      retainedChanges = new Array();
      $.retainChangesOnPaging = function(){
        var changedCells = $('#grid').jqGrid('getChangedCells');
        // loop over changedCells array, removing duplicates if you want to...
          return  retainedChanges.push(/* this is inside the loop; push current value to array*/);
         ....
      }
       $.getRetainedChanges = function(){
         return retainedChanges;
       }
    })(jQuery);

最佳答案

虽然您应该接受 jQuery 作为参数,但它工作正常:

(function($){

这样,即使 $ 符号被用于闭包之外的其他东西,它也不会影响闭包内的代码。

还有2件事:

1) 您应该一起声明和分配您的变量,并使用 [] 而不是 new Array()
2) 你在这里缺少一个 $ 符号:('#grid')


要了解完整的概要,请看这个:

(function($){

  var retainedChanges = [];

  $.retainChangesOnPaging = function(){
    var changedCells = $('#grid').jqGrid('getChangedCells');
    // loop over changedCells array, removing duplicates if you want to...
    return  retainedChanges.push(/* this is inside the loop; push current value to array*/);
    ....
  }

  $.getRetainedChanges = function(){
    return retainedChanges;
  }

})(jQuery);

关于javascript - 我的 javascript 闭包写得正确吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8736430/

相关文章:

javascript - Node.js, express, Passport 认证 "Bad Request"

javascript - 避免 ajax 调用中的竞争条件

javascript - jQuery 的条件始终采用第一个条件

jQuery 禁用所有重定向(链接、表单提交、window.location 更改等)

scala - 在 scala 中以参数方式保存闭包的数据结构

javascript - 如何等到页面加载图像在非 Angular 页面上的 Protractor 中消失

javascript - 输入[type ='file' ] 标签名称

php - 如何使用 ajax 和 PHP 计算和显示实时数据库查询?

groovy - Groovy 中的函数式样式计数器

javascript - 调用函数后,函数的作用域还剩下什么?