[英]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
或循环( for
, while
)之后,如果后面只有一个语句,则可以省略{
。 所以
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);
}
它需要花括号。
这有点不一致。 例如,它适用于for
, while
和if
,但不适用于try
或catch
。 为了保持一致,我始终使用花括号。
只要是一条指令,您就可以省略大括号。
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.