So I got this right but I think I need to clarify some points so I that I understand the why and if.
In my code I should use a return but I was playing around. When I takeaway addThree( )or addFive( ) I get undefined or nine.
So the value nine when I put 1 in the parameter if the first function gives me nine so both function are working.
Are addThree( ) and addFive( ) calling the function to run?
When I log either function I still get the value undefined if I log addThree or 9 if I use a return and addFive. Why are they logging different and c should I not just get the output of the value I log?
Thanks in advance.
Your code so far
// Setup
var sum = 1;
function addThree() {
sum = sum + 3;
}
// Only change code below this line
// Only change code above this line
addThree();
addFive();
function addFive() {
return sum +5
}
console.log(addFive())
Your browser information:
User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.56.
Challenge: Understanding Undefined Value returned from a Function
I think your questions are answered in the challenge description - every function that does not explicitly have a return statement returns undefined by default. The function can of course change a global variable like sum, but the returned value of the function is still undefined.
We’re a little confused with terminology here… A function can either explicitly return a value with a return statement, or it implicitly returns undefined if there’s no such statement (a function can also return another function, but that’s going too far now).
There’s a difference between
returning a value from a function and
changing a global variable like sum
In the challenge, both functions addThree() and addFive() change the global variable. Now for what they return, it might help to assign the returned value to a variable test:
var sum = 3;
function addFive(){
sum = sum + 5
}
var test1 = addFive()
console.log(test1) // undefined
console.log(sum) // 8
Now with how you modified the function. The function now returns 8, but the global variable wasn’t changed and is still 3:
function addFive(){
return sum + 5
}
var test2 = addFive()
console.log(test2) // 8
console.log(sum) // 3
Now doing both, changing the global variable and also returning the result of the addition:
function addFive(){
return sum = sum + 5
}
var test3 = addFive()
console.log(test3) // 8
console.log(sum) // 8
If this is confusing, don’t worry much about it. It’s one of the things that will just become clearer with time.