Javascript 对于if语句之后的in语句

Javascript 对于if语句之后的in语句,javascript,typescript,Javascript,Typescript,我对js/ts有点陌生,最近看到一些代码如下所示: if (m.attributes) for (const aName in m.attributes) { ... } if (m.attributes){ for (const aName in m.attributes) { ... } } 我希望如果验证m.attributes不是错误的(即它不是null |未定义),那么for语句本质上就是m.attributes 有人能解释一下为什么for语句不在它自己

我对js/ts有点陌生,最近看到一些代码如下所示:

if (m.attributes) for (const aName in m.attributes) {
...
    }
if (m.attributes){
 for (const aName in m.attributes) {
  ...
    }
  }

我希望
如果
验证
m.attributes
不是错误的(即它不是null |未定义),那么
for
语句本质上就是
m.attributes

有人能解释一下为什么
for
语句不在它自己的范围内吗? 我希望语法看起来更像这样:

if (m.attributes) for (const aName in m.attributes) {
...
    }
if (m.attributes){
 for (const aName in m.attributes) {
  ...
    }
  }


如果
if
语句后只有一条语句,则大括号是多余的。话虽如此,这:

if (m.attributes) for (const aName in m.attributes) {
     ...
    }
虽然完全有效,但它不是一段编写良好的代码。通常,为了增加可读性,可以这样写:

if (m.attributes)
   for (const aName in m.attributes) {
     ...
    }

如果
If
后面只有一条语句,
{}
是不必要的。签出第一部分他们展示了单个语句的示例,然后描述了如何执行多个语句。Typescript遵循与JavaScriptPersonal相同的语法,我会添加多余的大括号,只是为了可读性。毫无疑问,我也会这样做。我只是简单地指出,如果必须使用无括号,那么在
if
语句之后添加一行新行将有助于代码的可读性。