繁体   English   中英

JavaScript:什么时候可以省略大括号?

[英]JavaScript: When we can omit curly brackets?

我今天注意到,可以使用较少的花括号来完成JavaScript对象的循环。

例如,正常的处理方式:

// The normal way
var foo = {
    bar: 1
};

for(var key in foo) {  
    if(foo.hasOwnProperty(key)) {
        console.log(foo[key]); // prints out 1
    }
}

另一种选择是,通过删除多余的{ ... } ,它仍然有效:

// The alternative
var foo = {
    bar: 1
};

for(var key in foo) if(foo.hasOwnProperty(key)) { // <-- see :)
    console.log(foo[key]); // prints out 1
}

但是,我不太确定为什么这是可能的。 所以我的问题是:何时可以省略大括号? 我很不高兴地说“太广泛了”,所以我试图强调, 我并不是在寻找一百万个用例 ,简短的回答就可以了,这可以解释基本知识。

提前致谢!

if或循环( forwhile )之后,如果后面只有一个语句,则可以省略{ 所以

if (condition)
    someFunction();

等于

if (condition) {
    someFunction();
}

if (condition) a(); b();

等于

if (condition) {
    a();
}
b();

您甚至可以嵌套:

if (condition) 
    while(condition2)
        if (condition3)
            someFunction();

为了提高可读性,最好(请阅读:我更喜欢)始终使用花括号(也不太容易产生编程错误)。

只要只有一条语句,就可以省略花括号。

for (var x in obj) {
    console.log(x);
}

可以变成

for (var x in obj)
    console.log(x);

但是如果你有

for (var x in obj) {
    console.log(x);
    console.log(x);
}

它需要花括号。


这有点不一致。 例如,它适用于forwhileif ,但不适用于trycatch 为了保持一致,我始终使用花括号。

只要是一条指令,您就可以省略大括号。

for(var key in foo) 
    if(foo.hasOwnProperty(key))
        console.log(foo[key]); // prints out 1

for(var key in foo)
    if(foo.hasOwnProperty(key))
        for(var i=0; i<=10; i++) {  
            console.log(foo[key]); // prints out 1
            console.log(foo[key]); // prints out 1
            console.log(foo[key]); // prints out 1
        }

据我所知, 只有一种情况可以省略花括号 ,那就是条件之后只有一个语句

if (condition) statement;

在您的示例中,您从第一个条件中省略了花括号,但将其保留在第二个条件中

if (condition)
    if (condition) { statement; }

[注]可以省略分号,但是这被认为是不好的编程习惯。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM