【发布时间】:2014-07-10 17:12:47
【问题描述】:
我正在清理一些 Javascript 代码,用于计算有多少人下载了已分配下载的内容。我遇到了这个简单的声明:
var percent_downloads = 0;
if (users_assigned != 0) {
percent_downloads = total_downloads / users_assigned;
}
我正在考虑重写代码以在 if-else 语句中声明变量,如下所示:
if (users_assigned != 0) {
var percent_downloads = total_downloads / users_assigned;
} else {
var percent_downloads = 0;
}
根据this question,它们的功能相同,但哪个代码更好?
【问题讨论】:
-
我认为这更像是一种偏好。但是,我认为,在使用它之前声明它(即使没有 var percent_downloads;)是一种更常见的方法。
-
这是一个范围问题。如果变量除了在
if中声明和初始化之外没有任何用处,那么拥有它就没有任何意义,而且好的编译器甚至会优化该代码。 “更好”是主观的,但在所有条件相同的情况下,您使用的文本越少,代码的可读性和可理解性就变得一目了然 -
@fnostro 除了JS中只有两个作用域外,变量将存在于
if语句之外因为吊装。当let语句得到更好的支持时,这将不太正确。 -
还要考虑
var percent_downloads; if(…) percent_downloads = …; else percent_downloads = …;和var percent_downloads = (…) ? … : …;。 -
@DaveNewton:在 JS 中提升是不幸的,它违背了自然的可读性。在 OP 示例中,假设
percent_downloads在其他地方使用,第二个示例可能是 JS 合法的,但实际上并没有传达意图。 IMO,最好把代码写成范围是一个因素,即使在 JS 中也是如此。
标签: javascript optimization coding-style