If (true) -- what does this evaluate?

Tell us what’s happening:

I don’t understand what if (true) is evaluating. Can someone explain?

Your code so far


function checkScope() {
'use strict';
var i = 'function scope';
if (true) {
  i = 'block scope';
  console.log('Block scope i is: ', i);
}
console.log('Function scope i is: ', i);
return i;
}

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36.

Challenge: Compare Scopes of the var and let Keywords

Link to the challenge:

If statements evaluate a boolean to run code conditionally, so running if(true) will always run. It looks like this test is designed to show how scoping with let works, so it wants to run the if statement every time.

Try updating the code to define i twice instead of reassigning it using let to see how the variable will be scoped to the if statement.

Your output should read
Block scope i is: block scope
Function scope i is: function scope

3 Likes