【问题标题】:Why does jslint prefer splitting variable declarations in javascript?为什么 jslint 更喜欢在 javascript 中拆分变量声明?
【发布时间】:2018-03-18 19:54:26
【问题描述】:

为什么 jslint 建议在 JavaScript 中拆分变量声明。这样做有什么好处吗?直到今天我所理解的选项1和选项2都是相同的。有什么区别?

选项 1

var element1, element2;

选项 2

var element1, 
var element2;

【问题讨论】:

  • 这是一个风格选择的事情。如果您可以选择使用const(或let),请考虑使用它们,因为它们是块级的,因此可以与实际使用它们的逻辑更紧密地相关。如果您尝试重新const/re-let 某些东西,而不是悄悄地允许它,它们也会抛出理智的错误。

标签: javascript variables jslint


【解决方案1】:

这些声明在技术上是相同的,实际上是一个偏好问题。差异来自人为因素。 jslint 的规则更喜欢一致性可读性,特别是对于项目的长期而言。

考虑以下代码:

var variable1 = "value 1", variable2 = "value 2"; 

这看起来还不错,但即使有两个变量,它也比将声明分成两行更难阅读。

现在假设项目增长了几个月,同一行也相应增长:

var variable1 = "value 1", variable2 = "value 2", variable4 = "value 4", 
    variable5 = "this"; 
var variable6 = "starts"; 
var variable7 = "to get", variable8 = "hard", variable9 = "to read"; 

无需任何特定的强制执行,开发人员可以根据需要选择在何处声明变量,这意味着他们可以将它们添加到现有的 声明行,或添加新声明。这种选择通常是完全主观的。如上所示,与以下相比,代码变得越来越难阅读:

var variable1 = "value 1";
var variable2 = "value 2"; 
var variable4 = "value 4";
var variable5 = "this";
var variable6 = "starts";
var variable7 = "to get";
var variable8 = "hard";
var variable9 = "to read";

(我什至在输入这个答案时出错,因为我忘记了变量编号,而且我只在将声明分成几行时才注意到。)

有了这条规则,开发人员就不需要考虑是否应该对变量声明进行分组以及何时开始新的声明,这消除了一些精神负担并提高了整个代码库的一致性。每行单个声明还可以在需要时更轻松地移动它们,尤其是在具有剪切和粘贴整行的键绑定的编辑器中。

最终,这仍然是个人决定。如果需要,我们可以禁用该规则。选择最适合您的项目的方法。

【讨论】:

    【解决方案2】:

    除了可读性和避免重复之外,没有任何实际优势。

    如果您不使用多个 var 语句,您将编写更少且干净的代码,但在此 article 中有一个有趣的讨论,其中显示了一些情况,例如您可能忘记插入逗号并使用

    var element1
        element2;
    

    由于自动分号插入,这可能导致第二个变量被全局声明。

    虽然使用单个 var 可能更容易出错且难以维护(例如,缩进、将变量声明移动到代码中的其他位置),但我认为这纯粹是个人决定。

    【讨论】:

      猜你喜欢
      • 2014-08-19
      • 2012-10-27
      • 1970-01-01
      • 2015-03-17
      • 2011-05-10
      • 1970-01-01
      • 2011-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多