2

JavaScriptコメントを使用してオプションを設定します

/*jslint undef: false, browser: true */

ここのjslintドキュメントに従って、誤った順序の関数と変数の定義を許容します。私もそれを「true」に設定しようとしましたが、これも機能しませんでした。

それでも私はまだ得ます

'vFlipB'は、定義される前に使用されていました。

        vFlipB('mi_cover');

この関数は、299行目で最初に呼び出されます。

Mo.UserAny = {
    pre : function (o_p) {
        vFlipB('mi_cover');
        if ((localStorage.hash === '0') || (localStorage.hash === undefined) || (localStorage.hash === null)) {
            o_p.result = 'complete';
            Vi.Ani.flipP('sp');
            return o_p;
        }

。。。

しかし、ここでその下まで発見しないでください:

958年

/**
 **  vFlipB
 */

function vFlipB( current_id ) {

    // turn on

    var current_link = document.getElementById( current_id + '_l' ),
        current_box = document.getElementById( current_id );

    current_box.style.opacity = 1;
    current_link.style.borderBottom = '2px solid #31baed';   

    // turn off

    if( vFlipB.previous_box !== undefined && vFlipB.previous_box !== current_box ) {
        vFlipB.previous_box.style.opacity = 0;
        vFlipB.previous_link.style.borderBottom = '';  
    }

    // set current to static previous

    vFlipB.previous_box = current_box;
    vFlipB.previous_link = current_link;
}
4

1 に答える 1

1

これを使って: /*jslint undef: true, sloppy: true, browser: true */

docsによると、このundefオプションは厳密モードでは使用できません。そのため、JS ファイルの先頭からステートメントを設定してsloppy: true(すばらしい名前ですね?) 削除する必要があります。"use strict";undef逆の値もありました)。

もちろん、strict モードを使用する正当な理由はたくさんあります。 警告を回避したいが厳密モードを使用したい場合、実際には次の 3 つのオプションしかありません。

  • JSLint の代わりに JSHint を使用する
  • "use strict";ファイルまたはモジュールの先頭ではなく、個々の関数本体の先頭に配置します。(ただし、vFlipB() を呼び出す関数内に配置することはできません。そうしないと、警告が戻ってきます)
  • コードを変更して、下位で定義されている関数を呼び出さないようにします。コードを並べ替えたり、個別のモジュールに分割したり、次のようなトリックを実行したりできます。

    var vFlipB;
    ...
    vFlipB();
    ...
    vFlipB = function () { ... };
    
于 2013-04-23T20:01:29.893 に答える