Skip to content

Instantly share code, notes, and snippets.

@henrytran9x
Last active May 31, 2022 04:31
Show Gist options
  • Save henrytran9x/23edcfadf385dfaf771cc694c4e0d5c1 to your computer and use it in GitHub Desktop.
Save henrytran9x/23edcfadf385dfaf771cc694c4e0d5c1 to your computer and use it in GitHub Desktop.
Interview Question

Javascript

Question 1

In what order will the numbers 1-4 be logged to the console when the code below is executed? Why?

(function() {
    console.log(1); 
    setTimeout(function(){console.log(2)}, 1000); 
    setTimeout(function(){console.log(3)}, 0); 
    console.log(4);
})();

The values will be logged in the following order:

1
4
3
2

Let’s first explain the parts of this that are presumably more obvious:

1 and 4 are displayed first since they are logged by simple calls to console.log() without any delay 2 is displayed after 3 because 2 is being logged after a delay of 1000 msecs (i.e., 1 second) whereas 3 is being logged after a delay of 0 msecs.

Question 2

What will be the output when the following code is executed?

console.log(false == '0')
console.log(false === '0')

The code will output:

true
false

In JavaScript, there are two sets of equality operators. The triple-equal operator === behaves like any traditional equality operator would: evaluates to true if the two expressions on either of its sides have the same type and the same value. The double-equal operator, however, tries to coerce the values before comparing them. It is therefore generally good practice to use the === rather than ==. The same holds true for !== vs !=.

Question 3

What will be the output of this code?

var x = 21;
var number = function () {
    console.log(x);
    var x = 20;
};
number();

The code will output: undefined

It’s because JavaScript initialization is not hoisted. (Why doesn’t it show the global value of 21? The reason is that when the function is executed, it checks that there’s a local x variable present but doesn’t yet declare it, so it won’t look for global one.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment