我正在尝试编写更具可读性和更高效的代码,我一直讨厌 if if if 链 .. 是否有可能以其他更“优雅”的方式编写以下语句,例如使用三元操作:
if(text.length < 1){
if(errtext.length > 1){
errtext+="<br>";
}
errors = true;
errtext += "Field cannot be empty";
}
谢谢
最佳答案
老实说,在大多数情况下,您希望使用 if 链,因为它们对读者来说更清晰。有一些异常(exception),但不多。
如果您的代码很笨拙,通常是因为您的基本方法是错误的。试试这个:
function validate()
{
errs = [];
// ...
if (!txt.length) {
errs.push("Must have text, man!");
}
// ...
return errs.join("<BR>");
}
值得一提的是,字符串在 Javascript 中是不可变的。如果您对字符串 +=,则会创建大量中间字符串,这会降低性能。
例如
var msg = "Tom";
msg += ", Brad";
msg += ", Sam";
msg += ", Rick";
这最终会在内存中创建以下字符串:
"Tom"
"Brad"
"Sam"
"Rick"
"Tom, Brad"
"Tom, Brad, Sam"
"Tom, Brad, Sam, Rick"
如下所示:
var msg = ["Tom", "Brad", "Sam", "Rick"];
var msg = msg.join(", ");
在内存中创建以下内容:
"Tom"
"Brad"
"Sam"
"Rick"
"Tom, Brad, Sam, Rick"
在这种情况下,很可能不会产生很大的不同,但最好养成创建字符串数组和使用 join 方法的习惯。在较大的文本操作/生成问题中,它可能会导致速度大幅下降。
编辑:
如果调用函数需要检查是否存在错误,您始终可以对返回字符串的 .length
执行 if。如果你想更明确,你总是可以这样做:
if (!errs.length) {
return null; // or false, or a constant...
}
return errs.join("<BR>");
然后在您的调用代码中添加一个检查(=== null
等)
关于javascript - 在 javascript 中编写更高效的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1922581/