javascript的简明语法if语句没有大括号

hax*_*erz 6 javascript php

如此务实,我对这里正在寻找的东西有一个快速而肮脏的答案.但为什么不使用这个好主意呢?为什么我找不到它的正式文件?它不是规范和标准的一部分吗?它没有得到广泛支持吗?是否只是因为缩小可能会破坏使用该语法的代码?

如果您能指出我对该功能的更全面的文档,我会很感激.什么定义了if块的内容?是基于缩进吗?如果是的话,那会很有趣.

另一方面if,PHP中的语句是否有类似于这种语法的东西?我可以发誓,我已经看到他们在这里和那里被使用,但我找不到任何手头的例子.我只是疯了,它实际上不存在于PHP中,或者这些类型的if块可以在PHP中使用吗?JS和PHP都if支持这样的块else吗?

似乎还有一个基于缩进的缩进以及基于单行的语法.关于以下内容,您能告诉我什么?

if(condition) do_some_statement();

谢谢

T.J*_*der 9

但为什么不使用这个好主意呢?

因为它很难维护.

为什么我找不到它的正式文件?它不是规范和标准的一部分吗?

当然,参见§12.5 - if声明§12 -规范中的陈述.if一个声明的主体.一种StatementBlock(第12.1节),它允许将语句列表视为一个语句,但还有许多其他类型的语句.

它没有得到广泛支持吗?

通用.

是否只是因为缩小可能会破坏使用该语法的代码?

一个好的minifier不会打破这种语法.(事实上,一个好的minifier会利用它.)

什么定义了if块的内容?是基于缩进吗?

if语句的主体仅包含其后的语句,缩进在JavaScript中没有意义.所以这些都是等价的:

if (foo)
    bar();
charlie();

if (foo) bar();
charlie();

if (foo)
bar(); charlie();

    if (foo)
bar();
    charlie();
Run Code Online (Sandbox Code Playgroud)

在上面,只有呼吁bar是有条件的foo; charlie被称为无论如何.

这就是为什么我们有Block,这个语句引入了一个被视为一个单元的语句列表(一个块,你可能会说:-)):

if (foo) {
    bar();
}
charlie();

if (foo) { bar(); }
charlie();

if (foo) {
bar(); } charlie();

    if (foo)
{ bar(); }
    charlie();
Run Code Online (Sandbox Code Playgroud)

然而,缩进对于人类来说很重要,因此保持一致的缩进是一个好主意.上面每一个中的第一个例子对于我们凡人来说可能是最清楚的(列出的那些).:-)

另一方面if,PHP中的语句是否有类似于这种语法的东西?

我不是一个很大的PHP头,但看起来相同,在Control Structures中if定义-.有和没有的例子{}.(还有一个不同的替代语法,我不会在这里讨论.)

JS和PHP都if支持这样的块else吗?

是的,if支持else有和没有块.