Perfection Kills Quiz (part 4)

Previous posts on Perfection Kills JavaScript quiz: 1, 2, 3.

4)

var y = 1, x = y = typeof x;
x;

Correct answer: "undefined".

The '=' operator in JavaScript has right associativity, which means that x = y = typeof x is equivalent to x = (y = typeof x). First, the expression typeof x is evaluated. Since x has not been defined yet, typeof x evaluates to the string "undefined". After that, y is assigned the value of "undefined", and then x is assigned the same value. As a result, when the second line of code in this snippet is run, x has the value of "undefined" (a string).

All posts on Perfection Kills JavaScript quiz: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14.