阅读许多 javascript 库的代码,我看到许多开发人员在创建变量后就使用它们来设置变量。
var i = 0,
var c = 0;
我更喜欢在创建它们之后定义变量。
var i,
c;
i = 0;
c = 0;
但是可能有一个解释为什么会这样或那样?
阅读许多 javascript 库的代码,我看到许多开发人员在创建变量后就使用它们来设置变量。
var i = 0,
var c = 0;
我更喜欢在创建它们之后定义变量。
var i,
c;
i = 0;
c = 0;
但是可能有一个解释为什么会这样或那样?
这纯粹是风格。有些人喜欢将他们的声明与初始化隔离开来,而另一些人则喜欢将它们合二为一。对于 JavaScript 引擎,它们实际上是相同的,因为它var
在函数实际执行的第一行代码之前处理。(注意这与其他一些语言有什么不同。)也就是说,它完全一样地对待你的两个例子:首先它使用 value创建i
and ,然后才开始执行函数的逐步代码它设置为 0,然后设置为 0。(这在规范的第10.4.3节和第10.5节中有一些深入的介绍。)c
undefined
i
c
对我来说,只要我坚持简单的价值观,我就喜欢把它们合二为一(虽然我以前一直是一个“纯粹主义者”,把它们分开;我年轻的时候做了很多傻事)。但我尽量避免初始化中的复杂逻辑。有时我发现我已经将一半的函数编写为一系列以逗号分隔的语句var
,并且开始变得难以阅读和维护,所以我倾向于在那个时候将它们拉出来。
另一方面,将它们分开的一个原因是它为您提供了足够的空间来评论它们。:-)
两者都可以,但是如果您在没有初始化变量的情况下定义变量,并在初始化之前使用它们,那么这是不好的做法。
这是因为他们将使用条件来设置初始值,例如:
var i;
... code ...
if(b==something){
i = somevalue;
}
... code ...
a = i + b;
当 b 不等于某个值时,变量仍然是未定义的。为了防止这在以后的使用中成为问题,它们为变量提供了一个初始化值。
但是如果你在定义后直接设置初始值,就没有什么区别了。就像其他人说的那样,它是为了紧凑和良好的可读性和风格。
我认为这是一个偏好问题。我都用过。对于复杂的代码,第二个例子更好,只要编码器使用描述性变量名称。我喜欢将其视为告知读者我将使用这些变量,因此请注意它们。
另一个考虑因素是范围。确保您在正确的范围(全局/类/函数/等)中声明变量。如果您将它们声明得太窄,您会无意中创建两个不同的变量(这可能非常难以调试)。如果您将它们声明得太宽泛,可能会降低程序效率。
你甚至可以使用这种风格:
var a = b = 0;
在定义中初始化变量可防止因变量未设置且初始 JavaScript 默认值为undefined
.