我今天注意到可以使用较少的大括号来完成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
}
但是,我不太清楚为什么这是可能的。所以我的问题是:什么时候可以省略花括号?我得到了一个说“太宽泛”的downvote所以我试着强调我不是在寻找一百万个用例,简短的回答非常适合解释基础知识。
提前致谢!
答案 0 :(得分:5)
在if
或循环(for
,while
)之后,如果您之后只有一个语句,则可以省略{
。所以
if (condition)
someFunction();
等于
if (condition) {
someFunction();
}
和
if (condition) a(); b();
等于
if (condition) {
a();
}
b();
你甚至可以嵌套:
if (condition)
while(condition2)
if (condition3)
someFunction();
为了便于阅读,最好(阅读:我更喜欢)总是使用大括号(也不太容易造成编程错误)。
答案 1 :(得分:3)
只要有一个语句,就可以省略大括号。
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);
}
它需要大括号。
这有些不一致。例如,它适用于for
,while
和if
,但不适用于try
或catch
。为了保持一致性,我总是使用大括号。
答案 2 :(得分:0)
只要一条指令,就可以省略大括号。
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
}
答案 3 :(得分:0)
据我所知,只有一种情况可以省略花括号,而当条件后只有一条语句
if (condition) statement;
在您的示例中,您已从第一个条件中省略了大括号,但将它们保留在第二个
中if (condition)
if (condition) { statement; }
[注意] 可以省略分号,但这被认为是糟糕的编程习惯。