【问题标题】:JQuery and JavaScript methodsJQuery 和 JavaScript 方法
【发布时间】:2016-10-25 04:49:31
【问题描述】:

在大多数 JavaScript 方法(迭代器)回调中,第一个参数是元素,第二个参数是索引。但在 jQuery 的情况下,第二个参数总是元素,第一个参数是索引。为什么它们的格式不同?这是为了避免它们之间的混淆,因为它们都包含map,filter等方法。这背后有什么特殊含义吗?我只是想知道。

【问题讨论】:

  • 不,没有。在这种情况下,jQuery 是一个反叛者。请参阅 $.map$.fn.map 回调的参数。
  • @Vohuman : 是的,如果$.map 第一个参数是值...我没注意到 :)
  • 因为你没想到。这是一个不一致且令人困惑的功能。
  • @Vohuman : 是的,你是对的......当我开始使用 jQuery 时,我总是很困惑......

标签: javascript jquery methods arguments


【解决方案1】:

这是因为 jQuery 依赖于this;它不需要元素迭代器。

$('selector').each(function(){
  // 'this' refers to unwrapped jQuery selector element; no need for arguments == cleaner code
  var $this = $(this);
});

在 Vanilla JS 中,迭代器依赖于参数:

[].forEach(function(el, index){
   // 'this' refers to Window object; use the argument
   el.querySelector('foo')
});

因为 jQuery 可以使用 this 来利用作用域元素,所以它并不需要参数。我必须查看该库的历史,以查看该元素是否在早期版本中作为第二个参数存在。

【讨论】:

  • 您能否详细说明答案。这个不清楚 这更像是评论
  • @guradio 如果您放松一下,答案将会更新;)
  • 是的,这可能是一个原因,所以值 arg 在这里没有那么重要:)
  • 我太兴奋了,不知道队友:)
  • @guradio 听起来比预期更活泼,我喝了几杯酒,笑了
猜你喜欢
  • 2013-01-01
  • 1970-01-01
  • 2015-12-16
  • 2021-06-17
  • 1970-01-01
  • 1970-01-01
  • 2011-02-16
  • 2011-01-24
  • 1970-01-01
相关资源
最近更新 更多