创建变量后,对定义的变量是坏的/好的/可选的
Is bad/good/optionnal to defined vars after created them?
阅读许多JavaScript库的代码,我看到许多开发人员在创建变量后立即设置变量。
var i = 0,
var c = 0;
我更喜欢在创建变量后定义它们。
var i,
c;
i = 0;
c = 0;
但是可能会有一个解释,为什么这样或那样?
这是纯粹的风格。有些人喜欢将他们的声明与初始化隔离开来,而另一些人则喜欢在一个初始化中完成。对于 JavaScript 引擎来说,它们实际上是相同的,因为它在函数实际执行的第一行代码之前处理var
。(请注意它与其他一些语言有何不同。也就是说,它从字面上看,它以相同的方式对待您的两个示例:首先它使用值 undefined
创建 i
和 c
,然后当它开始执行函数的分步代码时,它才会将i
设置为 0,然后将c
设置为 0。(这在规范的第 10.4.3 节和第 10.5 节中有深入介绍。
对我来说,只要我坚持简单的价值观,我喜欢将它们合二为一(尽管我曾经一直是一个"纯粹主义者",将它们分开;我年轻的时候做了很多傻事(。但我尽量避免初始化中的复杂逻辑。有时我发现我已经将一半的函数写成一系列以逗号分隔的语句,以var
开头,这开始变得难以阅读和维护,所以我倾向于在这一点上将它们拉出来。
另一方面,将它们分开的一个原因是它给了你足够的空间来评论它们。
两者都可以工作,但是如果您在不初始化变量的情况下定义变量,并在初始化之前使用它们,那就是不好的做法。
这是因为他们将使用条件来设置初始值,例如:
var i;
... code ...
if(b==something){
i = somevalue;
}
... code ...
a = i + b;
当 b 不等于某物时,变量仍然是未定义的。为了防止这在以后的使用中成为问题,它们为变量提供了一个初始化值。
但是,如果在定义初始值后直接设置初始值,则不会有任何区别。就像其他人说的那样,这是为了紧凑性以及良好的可读性和风格。
我认为这是一个偏好问题。 我都用过。 对于复杂的代码,第二个示例更好,只要编码人员使用描述性变量名称即可。 我喜欢把它看作是告诉读者我将使用这些变量,所以要注意它们。
另一个考虑因素是范围。 确保在正确的范围内声明变量(全局/类/函数/等(。 如果声明它们太窄,您将无意中创建两个不同的变量(这可能非常难以调试(。 如果你声明它们太宽泛,可能会降低程序效率。
您甚至可以使用此样式:
var a = b = 0;
初始化定义中的变量可防止因变量未设置且初始 JavaScript 默认值为 undefined
而导致的错误。
- 在Javascript中使用全局变量作为缓存是很好的
- 这在JavaScript中是一个好的变量名吗
- I'我在页面加载时将整个$_SESSION变量放入一个json对象中.虽然这对我有效,但这是一个好的做法吗
- 这种减少if语句中声明的变量范围的模式是一种好的做法吗
- 创建变量后,对定义的变量是坏的/好的/可选的
- 这是了解 Java 脚本中变量类型的更好方法
- 将 HTML 存储在完全可读的 JavaScript 变量中的好方法
- 在递归中使用全局变量是一种好的做法吗
- 将html分配给javascript变量是一种很好的做法
- 更好的方法来显示两个PHP变量切换jQuery Ajax
- 是否有更好的/优雅的方式将JavaScript拆分值分配给变量?
- 这对于大量的变量来说是更好的
- 更好的方法在Javascript中清空变量和对象
- 变量未定义;"被认为是好的
- 在React.js中是否有好的方法来使用私有变量和方法?
- 封装全局变量是很好的JavaScript实践
- 将变量从php传递到js?或者更好的方法
- 为什么单变量在javascript中是好的
- 在重定向之前将php函数分配给同一页面中的变量会话的更好方法
- 用之前的结果定义变量,还有更好的方法吗?