Difference between .each() | $.each() | .forEach() in jquery
Giả sử mình có :
var list = ['a','b','c','d'];
Với .each() :
$(list).each(function(index, value){
console.log(index + " : " + value)
});
Với $.each()
$.each(list, function(index, value){
console.log(index + " : " + value)
});
Với .forEach()
list.forEach(function(index,value){
console.log(index+":"+value);
})
Đều thu được kết quả:
"0 : a"
"1 : b"
"2 : c"
"3 : d"
Mình không biết 3 phương thức này khác nhau ở chỗ nào. Nhờ các bạn giải thích giúp mình với
1 CÂU TRẢ LỜI
Hàm $(element).each()
với $.each()
về cơ bản là giống nhau bạn ạ, chúng chỉ khác nhau cách viết (cách gọi hàm thôi)
Thực tế thì hàm $(element).each()
sẽ gọi đến $.each()
đấy
Bạn có thể check source code của nó trên repo Github tại đây
jQuery.fn = jQuery.prototype = {
// Execute a callback for every element in the matched set.
each: function( callback ) {
return jQuery.each( this, callback );
},
}
Còn hàm .forEach()
thì là hàm vốn có của Javascript, không cần jQuery bạn cũng có thể sử dụng được, kết quả thì cũng giống 2 hàm trên thôi
Cám ơn bạn ạ, vậy là nói chung 3 thằng này không có khác biệt nhau gì về chức năng đúng không ạ
@wiliamfeng $(element).each()
với $.each()
thì không có gì khác biệt về chức năng (bởi 1 hàm thực chất là gọi đến hàm kia), tuy nhiên .forEach()
thì hơi khác biệt một chút.
.forEach()
là một hàm của Array.prototype
, nên chỉ dùng được với array, không dùng được với object.
Tuyên nhiên $(element).each()
với $.each()
thì dùng được với cả object nữa. Bạn có thể check qua source code ở đây
Ở trên, bạn lấy ví dụ là var list = ['a','b','c','d'];
tức với 1 array, nên cả 3 hàm đều trả ra kết quả giống nhau.
Nhưng khi list
của bạn là một object jQuery, như var list = $('a')
chẳng hạn, thì bạn chỉ có thể dùng list.each()
với $.each(list, function() {})
thôi
@thangtd90 Mình hiểu rồi, cám ơn bạn đã nhiệt tình giúp mình ạ