在循环中定义函数的最佳方法是什么?- JavaScript

What is the best way for defining functions in loops? - JavaScript

本文关键字:是什么 方法 JavaScript 最佳 循环 定义 函数      更新时间:2023-09-26

我想知道在循环中定义函数的方法更好?我总是使用第一种方式。正确吗?或者这种情况还有另一种方法?

请指导我,我在代码中经常使用第一种方式,我想知道这是不是真的?

$('.elements').each(function(){
  // elements
  var $t = $(this), $anotherEl = $t.find('.el2'), $anotherEl2 = $t.find('.el3');
  // variables
  var isVisble = $t.is(':visible'), isLand = $t.hasClass('.land');
  function doSomething(){
    $t.width($anotherEl.width() + $anotherEl2.width());
    // other codes ...
  }
  doSomething();
  $(window).resize(doSomething);
});

function doSomething(par1, par2, par3, par4){
  var $t = par1 , $anotherEl = par2, $anotherEl2 = par3;
  $t.width($anotherEl.width() + $anotherEl2.width());
  // other codes ...
}
$('.elements').each(function(){
  // elements
  var $t = $(this), $anotherEl = $t.find('.el2'), $anotherEl2 = $t.find('.el3');
  // variables
  var isVisble = $t.is(':visible'), isLand = $t.hasClass('.land');
  doSomething($t, $anotherEl, $anotherEl2, isLand);
  $(window).resize(function(){
    doSomething($t, $anotherEl, $anotherEl2, isLand);
  });
});

感谢您的提前。

为什么要循环这样做?因为这可以在不使用如下循环的情况下完成:

function doSomething(){
    $('.elements').each(function(){
         // elements
         var $t = $(this), $anotherEl = $t.find('.el2'), $anotherEl2 = $t.find('.el3');
         // variables
         var isVisble = $t.is(':visible'), isLand = $t.hasClass('.land');
         // now do something with the vars here.
    });
}
$(window).resize(doSomething).resize(); // <---trailing .resize() triggers on dom ready.

我看到你的方法的问题是:

  1. 使用循环.each()一次又一次地定义相同的函数,在每次迭代中执行相同的函数并绑定resize事件。
  2. 第二个似乎好一点,但部分原因是.resize绑定。