Javascript 有/没有花括号有什么区别?

Javascript 有/没有花括号有什么区别?,javascript,Javascript,我看到一个源代码,注意到在a.name周围有一个“附加”的花括号,如下所示,尽管我通常看到的情况是没有花括号。 我想知道这在某些特定的情况下会有不同的效果,我尝试过,但结果是相同的,或者某种惯例。有人知道区别吗 带花括号 array.forEach((项,索引)=>{ 设a={ id:索引; }; { a、 名称='测试'; } } 无花括号 array.forEach((项,索引)=>{ 设a={ id:索引; }; a、 名称='测试'; } 在本例中,这两个示例是相同的,但在其他情况下,

我看到一个源代码,注意到在
a.name
周围有一个“附加”的花括号,如下所示,尽管我通常看到的情况是没有花括号。 我想知道这在某些特定的情况下会有不同的效果,我尝试过,但结果是相同的,或者某种惯例。有人知道区别吗

带花括号

array.forEach((项,索引)=>{
设a={
id:索引;
};
{
a、 名称='测试';
}
}
无花括号

array.forEach((项,索引)=>{
设a={
id:索引;
};
a、 名称='测试';
}

在本例中,这两个示例是相同的,但在其他情况下,它有两个用途

一种用法是强制使用
let
let
声明变量的作用域为“块作用域”,如果您在这样的“块”内声明它们,则它们的作用域将为该块。例如:

let cookies = "Cookies are nice";

console.log(cookies);// "Cookies are nice"
<?php

//the code in here won't be auto-indented

?>
但是

它们的另一个用途是强制自动缩进在IDE中有一个额外的缩进…例如,大多数IDE不会自动缩进PHP代码,一些程序员会选择使用这些块来伪造IDE,使其自动缩进

例如:

let cookies = "Cookies are nice";

console.log(cookies);// "Cookies are nice"
<?php

//the code in here won't be auto-indented

?>

它们是一样的。可能是作者试图在那里添加一些对象,后来改变了主意,用大括号括起来在编程上是错误的。你不能这样放置一个对象。也许作者只是尝试过测试。这是一个未标记的块。我想说它是一个匿名范围,但既不是“js匿名范围”,也不是“js匿名范围”“js unlabeled block”出现在谷歌搜索结果中。我确信肯定有一些正式名称。也许很少考虑它,因为它在C之后的语言中不太相关(所有变量都需要在作用域的顶部声明,所以新的作用域允许您在函数的中途定义新变量)@Dmitry谢谢你的详细回答。我想我的情况下IDE可能需要缩进:)