JavaScript open brace in the same line

The issue you are thinking of is for return statements.

return {
  value: 'test'
}

Works fine, but the following does not:

return
{
  value: 'test'
}

JavaScript adds a semicolon after return turning the above into:

return;
{
  value: 'test'
}

This post on Elegant Code gives some explanation of automatic semicolon insertion, but in regard to returning objects, not declaring functions.


Douglas Crockford gives a reason for choosing the K&R style [1]:

"I always use the K&R style, putting the { at the end of a line instead of the front, because it avoids a horrible design blunder in JavaScript's return statement.

The blunder he is referring to is how JavaScript handles the return statement differently in the following two scenarios:

return {
   'status': 'ok'
};

... and:

return 
{
   'status': 'ok'
};

The first one will return an object with a status property, while the latter will return undefined because of semicolon insertion."

[1] Douglas Crockford: JavaScript: The Good Parts: Style (p. 96)

Tags:

Javascript