Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript var语句应该放在函数的顶部吗?_Javascript_Backbone.js_Jslint - Fatal编程技术网

Javascript var语句应该放在函数的顶部吗?

Javascript var语句应该放在函数的顶部吗?,javascript,backbone.js,jslint,Javascript,Backbone.js,Jslint,如果您遵循jslint.com指南,它会使您将它们放在函数的顶部,并像这样合并多个语句 function(){ var foo, moo, hoo; 然而,在学习下划线.js和backbone.js时,我发现没有遵循这个约定,而是根据需要使用它们。例如例如在u.each()中 有一种方法更具可读性吗?单程快吗 我知道javascript没有块作用域。这只是编程风格的问题,因为脚本的工作方式都是一样的 由于变量被提升,即在函数中的代码开始之前声明,因此在代

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

function(){
    var foo,
        moo,
        hoo;
然而,在学习下划线.js和backbone.js时,我发现没有遵循这个约定,而是根据需要使用它们。例如例如在u.each()中

有一种方法更具可读性吗?单程快吗


我知道javascript没有块作用域。

这只是编程风格的问题,因为脚本的工作方式都是一样的

由于变量被提升,即在函数中的代码开始之前声明,因此在代码开始时声明变量是有意义的,因为这与正在发生的事情更为相似


无论在何处声明变量,性能都是相同的。

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

由于变量被提升,即在函数中的代码开始之前声明,因此在代码开始时声明变量是有意义的,因为这与正在发生的事情更为相似


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

通常会制定一些惯例来帮助您阅读代码,从而使维护更便宜/更快,尽管我觉得没有必要,但这种特定的惯例可能会有所帮助


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

约定通常是为了帮助您阅读代码,使维护更便宜/更快,这种特定约定可能会有所帮助,尽管我觉得没有必要


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

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

也就是说,我注意到人们倾向于在
for
循环中使用
var
作为循环变量,即使他们将其余声明放在顶部。这样做的原因可能是因为他们想向代码读取器发出信号,表明此变量未在函数的其余部分使用,而是一个一次性循环变量(将其视为仅与此块相关)


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

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

也就是说,我注意到人们倾向于在
for
循环中使用
var
作为循环变量,即使他们将其余声明放在顶部。这样做的原因可能是因为他们想向代码读取器发出信号,表明此变量未在函数的其余部分使用,而是一个一次性循环变量(将其视为仅与此块相关)

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

“哪种方法最快”很容易回答:无论哪种方法允许您快速编写和维护代码。这关系到源代码的质量,而不是执行——解释器可以用任何一种方式来完成

旧的编程语言,包括早期版本的C,只支持在函数开始时声明变量。通过这种方式,您可以在一个地方立即了解函数中使用的变量:代码具有可预测的结构。后来添加了在任何地方声明变量的功能,因为许多人发现这很方便,也是一个好主意:它允许您在使用变量的位置附近声明变量,因此可以一起检查和管理声明和使用:代码具有更模块化的结构

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

答案很简单:“哪种方式最快”:无论哪种方式允许您快速编写和维护代码。这关系到源代码的质量,而不是执行——解释器可以用任何一种方式来完成

旧的编程语言,包括早期版本的C,只支持在函数开始时声明变量。通过这种方式,您可以在一个地方立即了解函数中使用的变量:代码具有可预测的结构。后来添加了在任何地方声明变量的功能,因为许多人发现这很方便,也是一个好主意:它允许您在使用变量的位置附近声明变量,因此可以一起检查和管理声明和使用:代码具有更模块化的结构

因为这是关于人为因素的,所以哪一个“更好”是一个完全开放的问题。风格指南是另一回事:Styl
  for (var key in obj) {