0

如果您遵循 jslint.com 指南,它会让您将它们放在函数的顶部,并像这样合并多个语句。

function(){
    var foo,
        moo,
        hoo;

但是,在学习 underscore.js 和 andbone.js 的过程中,我发现并没有遵循这个约定,而是根据需要使用它们。例如。例如在 _.each()

  for (var key in obj) {

一种方式更具可读性吗?一种方式更快吗?

我知道 javascript 没有块范围。

4

4 回答 4

2

“哪种方式最快”很容易回答:无论哪种方式都可以让您快速编写和维护代码。这是关于源代码质量,而不是执行——解释器可以做到这一点。

较旧的编程语言,包括早期版本的 C,仅支持在函数开头声明变量。这样做可以让您在一个地方立即概览函数中使用的变量:代码具有可预测的结构。随处声明变量的功能是后来添加的,因为很多人发现它很方便而且是个好主意:它允许您在变量使用的地方附近声明变量,因此可以一起检查和管理声明和使用:代码具有更多的模块化结构。

由于这是关于人为因素,哪个“更好”是一个完全开放的问题。风格指南是另一回事:风格约定是一种合理的做事方式,不一定是唯一的好方法。但是遵循约定会给您带来一致性的好处,并且代码的读者知道会发生什么。如果您在具有传统风格的上下文中编写代码,请遵循它。你在清晰和一致性方面获得的东西比你可能因为不遵循其他风格而放弃的东西更有价值。

于 2013-02-22T16:08:59.900 回答
1

这只是编程风格的问题,因为脚本的工作方式相同。

当变量被提升时,即在函数中的代码开始之前声明,在代码的开头声明它们是有意义的,因为这更接近于正在发生的事情。

无论您在哪里声明变量,性能都是相同的。

于 2013-02-22T16:03:43.637 回答
1

没有更好的方法,两种方法之间没有速度差异。两者完全相同,因为声明是“提升的”并且在整个函数中可用。(尽管它们在分配之前没有任何价值。)

也就是说,我注意到人们倾向于在循环var内部使用for循环变量,即使他们将其余声明放在顶部。造成这种情况的原因可能是因为他们想向代码阅读器发出信号,表明这个 var 没有在函数的其余部分中使用,并且是一个一次性循环 var(就好像它只与这个块有关。)

随着 Javascript 1.7 的广泛采用,这些使用var可能会被取代。let

于 2013-02-22T16:07:58.030 回答
0

通常会制定约定来帮助您阅读代码,从而使维护更便宜/更快,尽管我认为没有必要,但这种特定的约定可能会有所帮助。

但是,您给出的示例是声明仅用于循环的增量变量,该变量不应在循环之外使用(极少数情况除外),因此声明它非常有意义,使用它,一旦循环完成就忘记它(或清理它,尽管这很少需要)。

于 2013-02-22T16:06:05.227 回答