有/没有大括号有什么区别?

问题描述

我看到一个代码并注意到 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 一样使用,但我不知道它们在这些情况下究竟做了什么,也不能就此事发表意见。我敢打赌这里的其他人可以回答这个问题! (如果您知道,请随时发表评论分享原因!)