This is probably a simple question, but I would really like to know the answer.
Are the arguments passed into a function calculated once and set as local variables or are they calculated every time they're used inside the function?
For example:
When you write a forLoop, you should set a variable that finds the object using the iteration:
for(var i = 0; i < objects.length; i++) {
var obj = objects[i];
obj.title = "title";
obj.description = "description";
}
If you don't set the obj
variable then the operation for finding the object will be run more than once:
for(var i = 0; i < objects.length; i++) {
objects[i].title = "title";
objects[i].description = "description";
}
So far I've learnt that this is bad (although I'm guessing the performance difference in modern browsers is almost unnoticeable).
My question is, if you wrapped the modifying methods in a function and passed objects[i]
to the function, would objects[i]
be calculated once and set as the local variable obj
in the function or would it calculate it every time obj
is called?
What is a better practice, code A or code B?
Code A:
function modify(obj) {
obj.title = "title";
obj.description = "description";
}
for (var i = 0; i < objects.length; i++) {
modify(objects[i]);
}
Code B:
function modify(obj) {
obj.title = "title";
obj.description = "description";
}
for (var i = 0; i < objects.length; i++) {
var obj = objects[i];
modify(obj);
}
Update: This question is similar but different to this SO question because it simply questions when the value is calculated rather than which value is passed.