【问题标题】:How do I deal with JSLint errors and warnings?如何处理 JSLint 错误和警告?
【发布时间】:2012-09-09 14:30:39
【问题描述】:

我有以下代码:

var $form = $modal.find('#main-form');
var $submitBt = $modal.find('.block-footer button:contains("Submit")');
var oSubmit = {
    $form: $form,
    $modal: $modal,
    action: $form.attr('data-action'),
    entity: $form.attr('data-entity'),
    href: $form.attr('data-href'),
    row: $link.attr('data-row'),
    $row: $('#row_' + $link.attr('data-row')),
    $submitBt: $submitBt
};

当我使用 jslint 时,它告诉了我三件事:

  1. 缺少'use strict' 声明。
  2. 将此与前面的“var”语句结合起来。 <- 其中很多
  3. $row: $('#row_' + $link.attr('data-row')) - 错误:在定义之前使用了“$”。

有人可以就这些消息的正常做法给我一些建议吗?

【问题讨论】:

    标签: javascript jquery jslint


    【解决方案1】:

    它们只是消息,而不是错误。您可以轻松地关闭它们和/或忽略它们。

    1) 与其说是“缺失的陈述”,不如说是一个提示。

    2) 是代码样式提示。你可以写:

    var $form = …,
        $submitBt = …,
        oSubmit = …;
    

    3) 似乎不寻常地包含了 jQuery(你重新声明了它吗?),或者 jslint 错过了全局变量。

    【讨论】:

    • 3 是正常的(除非您的脚本包含 jQuery 源或其他东西)。您需要输入 /*global $ */ 来告诉 JSLint $ 已经在您正在验证的脚本之外定义。
    【解决方案2】:
    1. "use strict"; 添加到函数的开头。
    2. 使用var 语句声明变量:var foo = b, bar = d 等。
    3. /*global $: false */ 添加到文件的开头。这将告诉 JSLint 存在一个名为 $ 脚本可以使用的全局变量。

    【讨论】:

    • 您不需要$: false,只需/*global $ */ 即可。
    • 你能告诉我“use strict”是做什么的吗?
    • 您可以找到文档here。这是一种选择加入受限制的 JavaScript 版本的方法,其中不再允许一些事情(如声明变量隐式)。
    【解决方案3】:
    1. 关于use strict,看看strict mode。这是一个选择加入的功能,所以它不是错误。

    2. 这只是口味问题。 JSLint 建议你写:

      var foo, bar, baz;
      

      而不是

      var foo;
      var bar;
      var baz;
      
    3. 这是因为 JSLint 不了解 jQuery(及其“$”变量),因此它认为您使用的是未定义的变量。您可以在 JS 文件的顶部放置 /* global $ */,或在文本中输入 $,其中显示 在此处预定义全局变量(感谢 Fabrício Matté)


    另外,关于 JSLint 的一般情况:

    JSLint 测试一个特定的人(Douglas Crockford)关于什么是好的 JavaScript 代码的意见。 Crockford 非常好,但他的一些意见充其量只是保留性,比如下划线规则,或者使用递增/递减运算符。

    在上面的输出中 JSLint 标记的许多问题是 Crockford 认为导致难以维护代码的问题,或者是他认为过去导致他做“聪明”的事情可能很难的事情维护。

    Source (foxxtrot)

    【讨论】:

    • 另外,在页面底部,有一个带有predefine global variables here 的文本区域,只需输入$ 即可解决。或者干脆在代码的第一行加上/*global $ */
    【解决方案4】:

    1) use strict:这基本上可以让你写出更好的 JavaScript。它可以防止您使用 JavaScript 中的一些“坏”功能。

    2) 结合var:这个不用管,只是风格偏好而已。

    3) $ 在定义之前使用:它只是通知您$ 不存在。您必须将其添加到 jsLint 全局变量中。

    您可以通过将选项放在 JS 文件的开头来禁用 jsLint 中的任何这些选项:

    /*jslint options */
    

    更多信息http://www.jslint.com/lint.html

    【讨论】:

      猜你喜欢
      • 2015-02-16
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      相关资源
      最近更新 更多