为什么在常见的风格中 JavaScript 习惯把 { 写在一行末尾，而 C/C++ 却写到下一行？JavaScript 中，语句块的标识符 { 习惯这样写：

    
    
    balabala { // { 写在这一行
        // 代码
    }
    

而 C/C++ 则习惯这样写：

    
    
    balabala
    { // { 写在这一行
        // 代码
    }
    

为什么会有这样的代码风格差异？C/C++ 大括号不换行会有什么弊端吗？
主要是 Javascript 有 ASI, 规定还很怪, 你换行了可能会有 bug.

如果你硬要换行, 那括号最好左边加上 ;

这种风格有的人就觉得很怪, 抵触这种写法.

而且说到没事干喜欢换行的, 那首当其冲的是 C# 啊, C++ 才到哪.

比如

            return    {       foo: 1    }    

其实等价于

            return   // returning nothing    ;{      foo: 1    }    

再比如

            var foo = 1 + 2    (toString(foo) + 42).print()    

并不会触发 ASI, 数字 token 明明不能 call, 居然也解析成函数调用.

            a = b + c     (a + b) * d    

也不会触发 ASI, 等价于

            a = b + c(a + b) * f    

你要么写

            a = b + c     ;(a + b) * d