The question states: write a function that takes in two strings. Shouldn’t first and second be written as strings, such as const agreeOrDisagree (‘first, second’) ??
That is one string, btw. If the function expects two strings, then each would be quoted separately. Are first and second already declared variables with a value? If so, there would be no quotes since we wish to access those values, and not 'first', 'second'.
They both work, only differently. The exercise checker may be expecting to log the return value. If we log inside the function then the return value is undefined.
I would like to as well! I was using console.log in my if statement and it would print the correct answer but then Undefined underneath. When I came here and saw everyone saying to use return, I did that and then it worked. It doesn’t make sense to me
return hands a result back to the caller (the line in the code that called the function) that can be used once the function is exited. Logging in the function gives nothing back, and the result is only visible on the screen, but is not available in memory.
In JavaScript, console.log() is a method used to print the argument we pass to it to the console. If we execute console.log('cat'), 'cat' is the argument, and is printed to the console. The console.log() method is nothing more than a way for us to see the argument printed on the screen.
return is something else entirely. return passes a value back to the line of code that called a function or method (the caller), and ends the execution of the function/method.
If we want to see something printed to the console we use console.log(). It has absolutely nothing to do with whether or not we want to return a value.
Hello. Looking for an explanation . Tried writing this as a function declaration in the codepen environment, and have checked it against the codecademy example. I have also checked on the Firefox console. Both give reference errors. . Again, written identical to the codecademy example. Thanks in advance!!
Is one defined in caller scope? Are we giving enough positional arguments?
The answer to both questions is, no.
The function has two parameters so must expect two arguments in any call made to it.
foo('a', 'b')
The arguments we give can be literal or expression, in this case, literal. More typically we will be using variables, as you did with, one. Only thing missing is declaration.
one = 1
two = 2
console.log(foo(one, two))
foo is often used to alias function names in examples.
The interpreter takes anything it sees without quotes as an identifier. If we wish wood to be a textual word then it needs to be in quotes so the interpreter sees it as a character string.
@mtf I just saw that as you sent your reply :-). But of course, now I have yet another question about this. The return statement didn’t result as I expected. Why?
function myFunction(table, chair){
if(table === chair){
return “This is a table.”
}else{
return “This is a chair.”
}
}
table = (“wood”)
chair = (“plastic”)
console.log(myFunction(table)); runs the second false part
*console.log(myFunction(chair)): also runs the second false statement
*console.log(myFunction()); this runs the first true statement
*console.log(myFunction(table, chair)); also runs the second statement
if (table === chair) . **Would these not be considered equal or true? That is what I
was expecting.