FAQ: Conditional Statements - The if keyword

This community-built FAQ covers the “The if keyword” exercise from the lesson “Conditional Statements”.

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

Web Development

Introduction To JavaScript

FAQs on the exercise The if keyword

There are currently no frequently asked questions associated with this exercise – that’s where you come in! You can contribute to this section by offering your own questions, answers, or clarifications on this exercise. Ask or answer a question by clicking reply (reply) below.

If you’ve had an “aha” moment about the concepts, formatting, syntax, or anything else with this exercise, consider sharing those insights! Teaching others and answering their questions is one of the best ways to learn and stay sharp.

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!

Why is no semicolon used at the end of the if-statement?

The statement " if (sale=true) " outputs the same result as the statement " if (sale) " yet the exercise marks this as incorrect, saying that the statement assigns sale the value of true. Is this just a matter of making the code more concise?


I believe the semicolon would only be needed at the end of each line of code within the curly brackets.

I found this explanation:

Your Guide to Semicolons in JavaScript


Yeah, I saw this too. The directions didn’t even introduce the comparison operators yet, but I got the message at the bottom of the console saying that I should use a comparison operator instead of =, because that is assigning a value.

1 Like

Does this mean that if statements default to true?


This exercise just threw me.
I was expecting to put an argument in the if statement.
eg. if(sale = true){


not just (if sale){}

Where did I miss this crucial step?

I went elsewhere to find that a varialbe not assigned a value is a primitive boolean ‘0’, while a variable assigned a value is a primitive boolean ‘1’


Hi Ramjet,
Your first argument is right, but I don’t know they did not explain to us the different between (sale) and (sale = true).
If you type only (sale), it should work.

Why can’t I reassign the value?
It worked when I use var instead of let.

The syntax rules for let are more strict than with var, for one, and for good reason… Why declare a variable more than once? let declares a variable in its current block scope. After that, we can change the value as often as we need.

let sale = true;
sale = false;

let does work like var in terms of declaring variables without defining them.

let a;
var b;

Because loops like for and while consist of their own block of code, let is encouraged to keep the loop data from leaking out. This is useful, and the reason it was incorporated in ES. var is pretty much on the way out as kind of the lame duck in the pond. You’ll still see it a lot, but less and less as the years pass.

Final note, a variable inside a block that is defined by assignment alone becomes a global, automatically.

for (i of [1,2,3,4]) {


We probably don’t want this happening in our program for perhaps less than obvious reasons, but make it a rule to always use a keyword to declare variables. They will be adopted into the scope in which they are declared.

1 Like

I must be going crazy but I keep entering in the correct code ( let sale = true; ) however it keeps coming up false. I even copy and pasted the answers when i asked for the correct code however it still is coming up false! Can someone help me and tell me what I am doing wrong??

Hey there array,

It seems you may have stumbled upon a bug.
Try refreshing the page and pasting in your code again.
You may have to do this 2 or 3 times before it works.

P.S: your syntax for let sale = true; is 100% correct.

I’m getting a file browser instead of an editable .js file and it won’t let me upload or create new files or select files.

refreshing the browser solved the problem


create an if statement. Provide the if statement a condition of sale . Inside the code block of the if statement, console.log() the string 'Time to buy!' .

if (true) {
console.log(‘Time to buy!’);
// Prints “Time to buy!”

if (sale = true) {
console.log(‘Time to buy!’);
// Prints “Time to buy!”

I can not go to task 3?

Recall that = is the assignment operator and is not used for comparison. Instead we use, === to test identity.

sale [isIdenticalTo] true

However, it is not necessary to compare to a boolean. We can simply test for truthiness

sale = ""
if (sale) {
} else {
    console.log('Not true')

Why are the curly braces in different lines to the main code. I’ve seen the following syntax quite a bit now.
if (true) {
console.log(‘This message will print!’);

Can’t I write it like this?

if (true) {console.log(‘This message will print!’);}

The idea of giving separate lines to the braces is to make them more visible and easy to distinguish. There is no good reason write scrunched up code when white space is free.

I’m stuck :frowning: