但是为什么不使用这个好主意呢?
因为很难维护。
为什么我找不到它的任何正式文件?它不是规范和标准的一部分吗?
当然是,请参阅规范中的 §12.5 -if
声明和§12 - 声明。an 的主体if
是一个Statement。一种语句是块(第 12.1 节),它允许将语句列表视为一个语句,但还有许多其他类型的语句。
它没有得到广泛的支持吗?
普遍。
仅仅是因为缩小会破坏使用该语法的代码吗?
一个好的缩小器不会破坏这种语法。(事实上,一个好的缩小器会利用它。)
什么定义了 if 块的内容?它是基于缩进的吗?
语句的主体仅由其后的if
语句组成,缩进在 JavaScript 中没有意义。所以所有这些都是等价的:
if (foo)
bar();
charlie();
if (foo) bar();
charlie();
if (foo)
bar(); charlie();
if (foo)
bar();
charlie();
在上面,只有调用bar
是有条件的foo
;charlie
无论如何都被调用。
这就是我们有Block的原因,该Statement引入了被视为一个单元的语句列表(一个块,你可能会说 :-)):
if (foo) {
bar();
}
charlie();
if (foo) { bar(); }
charlie();
if (foo) {
bar(); } charlie();
if (foo)
{ bar(); }
charlie();
不过,缩进对人类很重要,因此保持一致的缩进是个好主意。对于我们这些凡人来说,上述每个例子中的第一个例子可能是最清楚的(在列出的例子中)。:-)
if
另一方面,PHP中的语句是否有类似于这种语法的东西?
我不是一个大 PHP 头,但它看起来相同,在Control Structures -if
中定义。有带和不带的例子{}
。(还有一种不同的替代语法,我不会在这里介绍。)
这样的if
块是否支持else
在 JS 和 PHP 中也有一个?
是的,if
支持else
带块和不带块。