有谁为什么其他优秀的jQuery.each
功能与(现在)原生的设计不同Array.forEach
?前:
var arr = ['abc','def'];
arr.forEach(function(entry, index) {
console.log(entry); // abc / def
});
这是绝对有道理的。但是 jQuery 选择将index
第一个参数作为第一个参数:
$.each(arr, function(index, entry) {
console.log(entry);
});
有谁知道这个设计决定背后的原因?我一直$.each
广泛使用,但它总是困扰着我,索引是第一个参数,因为它很少使用。我知道 jQuery 通过实现直接引用,this
但如果你这样做会很混乱:
var arr = ['abc','def'];
$.each(arr, function() {
console.log(this === 'abc'); // false both times, since this is a String constructor
});
并不是说它让我很困扰,我更喜欢使用原生 polyfills 来处理最常见的新数组函数,但我一直对设计决策感到好奇。forEach
也许它是在浏览器实现本机和旧版支持阻止他们更改它之前在旧时代制作的,或者......?
或者,它是这样设计的,因为它也可以用于本机对象,然后在回调中将键放在值之前“有意义”......?
旁注:我知道 underscore.js(可能还有其他库)以相反的方式(更类似于本机函数)。