See
Why is {} + {} no longer NaN in Chrome console?
Chrome devtools now automatically wrap everything that begins with {
and ends with }
in an implicit pair of parentheses (see code), to force its evaluation as an expression.
Firefox does not do this. In Firefox,
{a: 1}
is evaluated as a block, which has a label of a
, with an unused expression 1
:
{
a:
1
}
(this is why, in FF, you see that the final expression evaluated is 1
:

)
But labels cannot be enclosed in string delimiters (labels need to have the plain identifier only, just like a variable), so changing the a:
to "a":
throws an error, because colons can only be parsed when after a label, or between a key-value pair in an object.