问题描述
我看到一个源代码并注意到 a.name
周围有一个“额外的”大括号,如下所示,尽管我通常看到的常见情况是没有大括号。
我想知道这在某些特定情况下的工作方式有所不同,但我尝试过并且结果相同,或者某种约定。有人知道区别吗?
带大括号
array.forEach((item,index) => {
let a = {
id: index;
};
{
a.name = 'test';
}
}
没有大括号
array.forEach((item,index) => {
let a = {
id: index;
};
a.name = 'test';
}
解决方法
在这种情况下,两个示例是相同的,但是在其他情况下有两种用途。
一种用途是强制使用 let
声明的变量的范围。 let
变量是“块范围的”,如果你在这样的“块”中声明它们,那么它们的范围将是该块。例如:
let cookies = "Cookies are nice";
console.log(cookies);// "Cookies are nice"
但是
{
let cookies = "Cookies are nice";
}
console.log(cookies);// Reference error
它们的另一个用途就是强制自动缩进在你的 IDE 中有一个额外的缩进......例如,大多数 IDE 不会自动缩进 PHP 代码,一些程序员会选择使用这些块来伪造将 IDE 设置为自动缩进。
例如:
<?php
//the code in here won't be auto-indented
?>
但是
<?php
{
//if I do this,then it will be auto-indented.
}
?>
希望这能回答您的问题。 :)
编辑:实际上,我相信在引用对象时这些括号还有另一个用途。我已经看到它们像 { nameOfObject }
代替 nameOfObject
一样使用,但我不知道它们在这些情况下究竟做了什么,也不能就此事发表意见。我敢打赌这里的其他人可以回答这个问题! (如果您知道,请随时发表评论分享原因!)