我认为在那个特定的例子中没有任何理由。
但在某些情况下...
(请注意,如果对象出现在预期语句的位置,您可能需要将对象字面量括在括号中,以免字面量与块语句混淆。)
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects
eval()
可能与它有关,但在您的特定示例中,JS 解析器应该处理代码并且不应该使用eval()
.
例如(无括号):
SyntaxError: invalid label
eval("{a:1, b:2}")
和(带括号):
>>> eval("({a:1, b:2})")
Object { a=1, b=2}
也许它与Dojo的构建过程有关,并且NLS模块被重新格式化为需要括号?似乎不太可能,因为这似乎很脆弱,并且构建过程本身可以很容易地添加括号。
编辑:我刚刚在 GitHub 上查看了这个文件的历史。
原始版本(在 GitHub - https://github.com/dojo/dijit/blob/11f94ad6cebba102b8411ed1a67e35aed94a97bb/nls/common.js中)如下所示:
({
buttonOk: "OK",
buttonCancel: "Cancel",
buttonSave: "Save",
notSet: "Not set",
left: "Left",
right: "Right",
center: "Center",
middle: "Middle",
top: "Top",
bottom: "Bottom",
//units
unitPixel: "pixels",
unitPercent: "percent",
width: "Width",
height: "Height"
})
所以我猜这个文件最初是eval
'd,括号在历史上是必要的,但随着转向 AMD 变得有些多余。
当然可能是错的!