FAQ: Code Challenges: JavaScript Fundamentals - agreeOrDisagree()

Community%20FAQs%20on%20Codecademy%20Exercises

This community-built FAQ covers the “agreeOrDisagree()” exercise from the lesson “Code Challenges: JavaScript Fundamentals”.

Paths and Courses
This exercise can be found in the following Codecademy content:

Web Development

FAQs on the exercise agreeOrDisagree()

Join the Discussion. Help a fellow learner on their journey.

Ask or answer a question about this exercise by clicking reply (reply) below!

Agree with a comment or answer? Like (like) to up-vote the contribution!

Need broader help or resources? Head here.

Looking for motivation to keep learning? Join our wider discussions.

Learn more about how to use this guide.

Found a bug? Report it!

Have a question about your account or billing? Reach out to our customer support team!

None of the above? Find out where to ask other questions here!

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’) ??

2 Likes

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'.

2 Likes

How come I get an error with this code? I get the right answer and I’ve tested it but I’m still not allow to move forward.

1 Like

I just realised that “Agree” and “Disagree” were capitalised :pensive: . There should at least be some leeway for capitalisation of strings surely??

3 Likes

if you use a return and wrap the condition in () it will work.

try this…

const agreeOrDisagree = (answer1, answer2) => {return (answer1 === answer2 ? ‘You agree!’ : ‘You disagree!’);}

console.log(agreeOrDisagree(“yep3”, “yep”))

Why doe this work: const agreeOrDisagree = (first, secound) => {
if(first === secound) {return’You agree!’}
else {return ‘You disagree!’}}

but this doesnt?
const agreeOrDisagree = (first, secound) => {
if(first === secound) {console.log(‘You agree!’)}
else {console.log(‘You disagree!’)}}

6 Likes

I would be interested to know the answer to this as well!

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.

5 Likes

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

3 Likes

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.

7 Likes

I’d like to know too…

I was stuck for 20 minutes with this. Why sometimes we have to use console.log and other times don’t. Looking forward to knowing it.
Thanks :smiley:

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.

5 Likes

Thanks for the clear reply :smiley:

1 Like

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!!

function agreeOrDisagree (one, two){
if(one === two){
return ‘You agree!’
}else{
return ‘You disagree!’
}
}

console.log(agreeOrDisagree(one));*Uncaught ReferenceError: one is not defined *

  • at pen.js:3*
1 Like

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.

3 Likes

Hmm. Thanks for responding @mtf. I’m afraid i’m still not grasping this.

According to the logic which you demonstrated, technically the function below should work, right? However, it doesn’t seem to. 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));

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.

1 Like

@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.