gpt4 book ai didi

php - 没有大括号的 JavaScript if 语句的简洁语法

转载 作者:可可西里 更新时间:2023-11-01 13:12:25 26 4
gpt4 key购买 nike

所以从务实的 Angular 来说,我对我正在寻找的东西有一个快速而肮脏的答案here .但为什么使用它不是一个好主意?为什么我找不到它的任何正式文档?它不是规范和标准的一部分吗?它没有得到广泛支持吗?仅仅是因为缩小可能会破坏使用该语法的代码吗?

如果您能为我提供更全面的功能文档,我将不胜感激。什么定义了 if block 的内容?它是基于缩进的吗?如果是,那会很有趣。

另一方面,对于 PHP 中的 if 语句,是否有类似于此语法的内容?我可以发誓我已经看到它们在这里和那里被使用,但我找不到任何现成的例子。我是不是疯了,它实际上在 PHP 中不存在,或者那些类型的 if block 可以在 PHP 中使用吗?这样的 if block 是否也支持在 JS 和 PHP 中使用 else

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


如果(条件)do_some_statement();

谢谢

最佳答案

But why isn't using that a good idea?

因为它很难维护。

Why can't I find any formal documentation of it? Is it not part of the spec and standard?

当然是,见§12.5 - The if Statement§12 - Statements在规范中。 if 的主体是一个语句。一种语句 block (§12.1),它允许将语句列表视为一个语句,但还有许多其他类型的语句。

Is it not widely supported?

普遍。

Is it just because minification could break code using that syntax?

一个好的压缩器不会破坏这种语法。 (事实上​​,一个好的压缩器会使用它。)

What defines the contents of the if block? Is it indentation based?

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

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

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

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

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

在上面,只有bar 的调用以foo 为条件; charlie 无论如何都会被调用。

这就是为什么我们有 BlockStatement 引入了一个语句列表,将其视为一个单元(一个 block ,你可能会说 :-) ):

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

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

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

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

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

On another note, is there something similar to this syntax for if statements in PHP?

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

Does such an if block support having an else as well, both in JS and PHP?

是的,if 支持带 block 和不带 block 的 else

关于php - 没有大括号的 JavaScript if 语句的简洁语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11687932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com