Head-First-JavaScript-Programming icon indicating copy to clipboard operation
Head-First-JavaScript-Programming copied to clipboard

JavaScript - Pass-by-value || Page 92

Open adityathebe opened this issue 9 years ago • 2 comments

var age = 7; function addOne (x) { x = x +1; } addOne(age); document.write(age);

I'm gonna break this down the way I have understood.

So, we have a function called addOne which adds 1 to the value it accepts, right? And then we call the function with an argument of the value 7. So, now the function adds 1 to 7 and age is 8. But why is it that when I print out the value of age, it prints out 7 ??

adityathebe avatar Jul 21 '15 12:07 adityathebe

Hi adityathebe,

That's because JavaScript uses "pass by value". That means the value 7 gets copied into the variable x. You increase the variable x, but that doesn't change the value of age because they are two different variables.

If you want to change the value of age, you'd write it like this:

var age = 7;
function addOne(x) {
    x = x + 1;
    return x;
}
age = addOne(age);
document.write(age);

Here, if we return the value of x (which is now 8), and store that new value in age, then age will be 8. Do you see the difference?

Review page 92 again.

Hope that helps!

bethrobson avatar Jul 21 '15 17:07 bethrobson

Thank you. I'm really loving your book !!

adityathebe avatar Jul 22 '15 03:07 adityathebe