JSLINT 在 $(document).ready 行停止

jslint stops at $(document).ready line

本文关键字:ready document JSLINT      更新时间:2024-05-05

我在使用 JSLint 时遇到了问题,它提供了一个难以理解的错误:

我正在尝试分析以下结构的代码:

<script type="text/javascript">
    var MyGlobalObj = MyGlobalObj || {}; //used for creating namespace security
    MyGlobalObj.MyFunction = function () {
        //valid javascript
    }
    $(document).ready(function () {
        //Stuff I want analyzed
    });
</script>

我在代码中混合使用了javascript和jQuery。但是,JSLint声称,在就绪操作的行上,:

Unexpected '$'.
        $(document).ready(function() {

对不起,但是...什么?为什么会出乎意料?什么是"正确"的实现?

Options I am using:
    /*jslint white: true, browser: true, devel: true */
Entry in the predef box:
    $

注意:在其他地方,我可以根据需要声明$(变量(。只是那一行。

JSLint 优先级发生意外冲突,导致此错误。

根据关于分号的 JSLint 文档:

JSLint 期望每个语句后面都跟着;除了 forfunctionifswitchtrywhile。JSLint 不期望 以查看不必要的分号或空语句。

为了提供命名空间保护,我根据此处的教程实现了命名空间:

http://elegantcode.com/2011/01/26/basic-javascript-part-8-namespaces/

但是,当将新变量分配给命名对象时,JSLint(显然是标准约定(认为代码

Obj.Method = function (TheArgs) { /*do stuff*/ };

应后跟分号,无论是否使用 function 关键字。这源于赋值运算符对分号的要求,以取代函数关键字省略的分号。

感谢 Felix Kling 指出"意外"表示意外行之前的代码没有正确结束。

这是该代码的 JSLint 版本。

  1. 添加分号
  2. 使用严格

    /*

    全球 $,文档 */

    "使用严格";

    var MyGlobalObj = MyGlobalObj ||{};用于创建命名空间安全性

    MyGlobalObj.MyFunction = function (( {有效的JavaScript};

    $(document(.ready(function (( {我想要分析的东西});