1

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 は、ready 操作の行で、次のように主張しています。

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

申し訳ありませんが...何ですか?なぜそれが予想外なのですか?「正しい」実装とは何ですか?

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

注: 他の場所では、必要に応じて $(variable) を宣言しても問題ありません。その一行だけです。

4

2 に答える 2

0

これは、そのコードの JSLint 検証バージョンです。

  1. セミコロンを追加
  2. 厳格な使用

    /*グローバル$、ドキュメント*/

    "厳密を使用";

    var MyGlobalObj = MyGlobalObj || {}; //名前空間セキュリティの作成に使用

    MyGlobalObj.MyFunction = function () { // 有効な JavaScript };

    $(document).ready(function () { // 分析したいもの });

于 2012-08-09T18:42:12.873 に答える
0

JSLint 優先度の予期しない競合が発生して、このエラーが発生しました。

セミコロンに関するJSLintドキュメントによると:

JSLint は、、、、、および;を除く すべてのステートメントの後に続くことを想定しています。JSLint は、不要なセミコロンや空のステートメントが表示されることを想定していません。forfunctionifswitchtrywhile

名前空間の保護を提供するために、ここにあるチュートリアルに従って名前空間を実装しました。

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

ただし、名前付きオブジェクトに新しい変数を割り当てる場合、JSLint (および明らかに標準的な慣習) では、コードは次のようになります。

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

function キーワードの使用に関係なく、セミコロンが後に続く必要があります。これは、関数キーワードのセミコロンの省略に代わるセミコロンに対する代入演算子の要件に由来します。

「予期しない」とは、予期しない行の直前のコードが正しく終了しなかったことを示していることを指摘してくれた Felix Kling に感謝します。

于 2012-07-31T17:09:36.867 に答える