我曾经听说,在一行语句中使用花括号对JavaScript是有害的。我不记得推理了,谷歌搜索也没有多大帮助。
在JavaScript中,把所有语句都用大括号括起来是一个好主意吗?
我这么问,因为似乎每个人都这么做。
我曾经听说,在一行语句中使用花括号对JavaScript是有害的。我不记得推理了,谷歌搜索也没有多大帮助。
在JavaScript中,把所有语句都用大括号括起来是一个好主意吗?
我这么问,因为似乎每个人都这么做。
当前回答
No
但他们是被推荐的。如果你要展开你的陈述,你会需要它们。
这是完全有效的
if (cond)
alert("Condition met!")
else
alert("Condition not met!")
然而,强烈建议您总是使用大括号,因为如果您(或其他人)展开语句,就会需要它。
在所有带有括号的C语法风格语言中都遵循同样的做法。C, c++, Java,甚至PHP都支持不带括号的一行语句。你必须意识到你只保存了两个角色,有些人的支撑风格甚至连一行都没有保存。我更喜欢全括号的风格(像下面这样),所以它往往有点长。这种权衡很好地满足了代码可读性非常清晰的事实。
if (cond)
{
alert("Condition met!")
}
else
{
alert("Condition not met!")
}
其他回答
不存在可维护性问题!
你们所有人的问题就是到处都用分号。多个语句不需要花括号。如果你想添加一个语句,只需使用逗号。
if (a > 1)
alert("foo"),
alert("bar"),
alert("lorem"),
alert("ipsum");
else
alert("blah");
这是有效的代码,将像您期望的那样运行!
我想指出的是,你也可以把花括号去掉else。正如约翰·瑞西格在这篇文章中看到的。
if(2 == 1){
if(1 == 2){
console.log("We will never get here")
}
} else
console.log("We will get here")
有一种方法可以实现多行非花括号if语句。(哇,多英语啊..)但是有点乏味:
if(true)
funcName();
else
return null;
function funcName(){
//Do Stuff Here...
}
以下是推荐的原因
假设我写
if(someVal)
alert("True");
然后下一个开发人员说,“哦,我需要做一些其他的事情”,所以他们写了下来
if(someVal)
alert("True");
alert("AlsoTrue");
现在你可以看到"AlsoTrue"总是为真,因为第一个开发人员没有使用大括号。
我目前正在做一个迷你器。即使是现在,我也要检查两个大脚本。通过实验,我发现: 如果花括号不包括';','return','for','if','else','while',' function',则可以删除后面的花括号。不考虑换行。
function a(b){if(c){d}else{e}} //ok
function a(b){if(c)d;else e} //ok
当然,如果后面没有其他的结束大括号,则需要用分号替换结束大括号。
函数不能以逗号结尾。
var a,b=function()c; //ok *but not in Chrome
var b=function()c,a; //error
在Chrome和FF上测试。