【问题标题】:Multiple variable declaration in one line - Javascript一行中的多个变量声明 - Javascript
【发布时间】:2016-06-28 02:45:43
【问题描述】:

我正在尝试学习 Javascript。我遇到了以下代码。

// Random function.
function order_summary(order_object) {
  var x, y;
  // More code here.
}

当我在 Jslint 中运行此代码时,它给了我以下错误。

Expected ';' and instead saw ','.
var x, y;

我认为这段代码没有任何问题。谁能解释一下这个错误是什么意思?

【问题讨论】:

  • 这不是语法错误,而是建议的样式,一些 人认为最好用单独的var 语句分别声明每个变量。
  • 您的编辑器可能将 lint 问题视为错误。
  • Jslint 对于应该如何编写 javascript 代码有非常强烈的意见(实际上是 Crockford 的意见,但 Jslint 是对你大喊大叫的人)。它不是语法检查器。这是一个“Crockford 不喜欢的东西”检查器。公平地说,确实避免了很多潜在的错误。 Jslint 会伤害你的感情——网站已经警告过你
  • 您可以尝试使用 JSHint。它有自己的优势。

标签: javascript jslint


【解决方案1】:

这两种风格有一个非常重要的区别:

var l1 = 1,
    l2 = 2;

var l1 = 1;
var l2 = 2;

即:在第二种形式中,调试器可以逐个执行每个分配。

在第一种形式中,整行是一个庞大的表达式,调试器会尝试立即执行它。当您有依赖于早期操作的分配时,逐行方法非常有用。

【讨论】:

    【解决方案2】:

    Jslint 是一种风格强制工具,不喜欢在一行上声明多个变量。要修复它,只需在每一行上声明每个变量。例如

    var x;
    var y;
    

    jslint 不喜欢这样的原因是因为 javascript 有分号插入。因此,如果您不小心省略了这样的逗号:

    var x
    y = 10;
    

    JS 会在第一行的末尾插入分号,你会不小心创建了一个全局变量 y。

    【讨论】:

    • 我认为,var 声明之间的意外键入(或复制粘贴)分号比意外省略更有可能一。
    • 这是有道理的。所以这更像是一个警告而不是一个错误。
    【解决方案3】:

    在任何 javascript 运行时使用单个 var 声明多个变量都不是问题。这只是 JSLint 抛出的警告,因为默认情况下它建议每行 1 个 var。

    如果您选中“Tolerate..”下的“multiple vars”选项,此警告将被忽略。

    【讨论】:

      猜你喜欢
      • 2011-05-04
      • 1970-01-01
      • 2016-07-14
      • 2020-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多