如何处理JSLint错误和警告?

时间:2012-09-17 11:21:30

标签: javascript jquery jslint

我有以下代码:

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')) - 错误:在定义之前使用了'$'。
  4. 有人可以就这些消息的正常做法给我一些建议。

4 个答案:

答案 0 :(得分:6)

  1. 关于use strict,请查看strict mode。这是一个选择加入功能,因此不是错误。

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

    var foo, bar, baz;
    

    而不是

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

    < / LI>

    另外,关于JSLint一般:

      

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

         

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

         

    Source (foxxtrot)

答案 1 :(得分:2)

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

1)更多的是小费而不是“缺失的陈述”。

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

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

3)看起来像jQuery的一个不寻常的包含(你重新声明了吗?),或者jslint错过了全局变量。

答案 2 :(得分:1)

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

2)结合var:不要担心这个,这只是一种风格偏好。

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

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

/*jslint options */

http://www.jslint.com/lint.html

的更多信息

答案 3 :(得分:0)

  1. "use strict";添加到函数的开头。
  2. 使用一个var语句声明变量:var foo = b, bar = d等。
  3. /*global $: false */添加到文件的开头。这将告诉JSLint存在一个名为$的全局变量,脚本可以使用该变量。