Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

JavaScript formatting: must braces be on the same line as the if/function/etc keyword? [duplicate]

Possible Duplicate:
why results varies upon placement of curly braces in javascript code

We have company policies that dictate that in PHP opening curly braces should be on their own lines for readability and so that they can line-up with the closing brace; thus:

if (true)
{
    ...
}

but in JS they should be kept on the same line, in case there are problems with browsers incorrectly interpretting it.

if (true) {
    ...

Is the above italic part a legitimate concern?

PS - I suspect that this question has been asked on here already, but I've not found a question that exactly matches mine. Apologies if it's there and I didn't find it.

like image 237
jezmck Avatar asked Dec 04 '22 11:12

jezmck


2 Answers

Yes, it matters in certain corner cases.

And the problem isn't with "browsers incorrectly interpreting it". The dodgy behaviour is correct according to the ECMAScript specifications. A JavaScript implementation that didn't exhibit this behaviour would not be spec-compliant.

An example. This function is broken:

function returnAnObject {
    return
    {
        foo: 'test'
    };
}

It's supposed to return an object, but actually returns nothing. JavaScript interprets it like so:

function returnAnObject {
    return;
    {
        foo: 'test'
    };
}
like image 95
LukeH Avatar answered Dec 05 '22 23:12

LukeH


The interpretation in JS, is usually when you have line without semi-colon, it is by default added at the end of line. To avoid such things and to increase readability, the braces are usually added on same line as IF, WHILE, Function etc.

This feature in JS is referred to as implicit semicolon insertion as far as I know.

like image 36
Sachin Shanbhag Avatar answered Dec 06 '22 00:12

Sachin Shanbhag