# 9. Functions with two parameters question, thanks!

#1

I understand the code#1 below is correct, but why is the second code wrong? why can't i add another var as the orange cost or divideByThree example? Thank you!!

Code#1:
var perimeterBox = function (p1, p2){
return p1+p1+p2+p2;
console.log(val)
};
perimeterBox(4, 2)

code#2:
var perimeterBox = function (p1, p2){
var val = p1+p1+p2+p2;
console.log(val)
};
perimeterBox(4, 2)

#2

Almost correct. Anything after `return` is unreachable. The function does not need to log anything so that line can be removed.

No need to. It will only be destroyed as soon as the function is exited. A straight forward return statement is sufficient. The computed value will be sent back to the caller. If you wish to log out the result, then log the function call expression:

``console.log(perimeterBox(4,2));    // 12``

Side note: When selecting variable names, use what best describe the arguments being passed in... `length` and `width` are the two concepts in play here. No need to obfuscate with indeterminant variables like `p1` and `p2`. Those terms describe nothing.

``````var perimeterBox = function (length, width) {
return ...
};``````

The example gives `length + length + width + width` which is correct, but when we see repetition in math, we simplify as a general rule. Your teacher probably harps about this if you are studying algebra.

``p = a + a + b + b``

but `a + a` is `2 * a`; and, `b + b` is `2 * b`

``p = 2a + 2b``

factoring out the `2` gives,

``p = 2 * (a + b)``

thus,

``return 2 * (length + width);``

#3

Thank you so much ~ great answer!!! !

#4

This topic was automatically closed 7 days after the last reply. New replies are no longer allowed.