In IE and Chrome, typing this into the JavaScript console throws an exception:
{} == false // "SyntaxError: Unexpected token =="
However, all of these statements are evaluated with no problem:
false == {} // false
({} == false) // false
var a = {};
a == false // false
Is this intentional behavior? Why does this happen?
In the console, when you start a statement with {}
, you are not creating an object literal, but a code block (i.e. the same block as you would make with an if
statement or a loop body). A symbol like ==
is then obviously not expected afterwards.
If you think of a code block, you know that something like a = 5;
could come after it:
if (some_condition) {
// do something
}
a = 5;
You can then use this to test in the console, and find that it works just fine:
{} a = 5;