This question has confused many of us for a long time, is it a loop? or is it a function?
In JavaScript a for
loop repeats until a specified condition evaluates to false
, it is similar to the Java and C for
loop, let’s assume there’s an array of students and I want to print information of each student.
I can use a for
loop to print all the students inside an array.
1
2
3
for(var i=0; i<students.length; i++){
print(students[i]);
}
In above code snippet I have created a counter variable i
and I am using it to track each iteration and student associated with it, but it doesn’t look quite readable. can we do any better? forEach
is here!
What is forEach
?
forEach
is a function available on Array
class which can be used to iterate over an Array
instance.
Let’s re-write the above code snippet using forEach
syntax.
1
2
3
students.forEach(function(student){
print(student);
});
This code snippet describes what it does, It almost looks like a sentence.
Conclusion
In JavaScript forEach
is not a loop, it is a higher order function available on Array
class which triggers the provided callback with each element inside an array in sequential order.
Polyfill
1
2
3
4
5
6
7
8
9
if(window.Array && !Array.prototype.forEach){
Array.prototype.forEach = function(cb, thisArgs){
var items = this;
thisArg = thisArg || window;
for(var i=0; i<items.length; i++){
cb.call(thisArgs, items[i], i, items);
}
}
}
Specifications
ECMAScript (ECMA-262)
The definition of ‘Array.prototype.forEach’ in that specification.