为什么JavaScript中的括号位置很重要?

nzn*_*oor 21 javascript

考虑这两个功能.

function func1() {
   return
   {
      foo: 'bar'
   }
}

function func2() {
   return {
      foo: 'bar'
   }
}
Run Code Online (Sandbox Code Playgroud)

alert(typeof func2()) //return object

alert(typeof func1()) //return undefined

为什么在许多其他语言中括号的位置不重要?它是语言功能还是错误?

Den*_*ret 44

因为自动分号插入.第一个代码与.相同

function func1() {
   return;
   {
      foo: 'bar'
   }
}
Run Code Online (Sandbox Code Playgroud)

如果你想知道为什么这段代码不会产生语法错误,那foo:就是标签.

关于

它是语言功能还是错误?

这是一个功能.但是非常危险的一个.保持它成为你的一个功能的最好方法是坚持一致的格式化风格(我建议使用谷歌风格指南,直到你有足够的经验来制作自己的格式.)