web-dev-qa-db-ja.com

グローバル変数としての「ウィンドウ」に関するJSLintの問題

だから私は JSLint を使ってエラーを検出しようとしています。気に入らないオプションをいくつかオフにしますが、windowグローバル変数を使用できるようにする方法はありません。さて、Yahoo Widgetオプションはありますが、それはやり過ぎです。

「ウィンドウ」を使用するとどうなりますか?

75
Bjorn Tipling
/*jslint browser: true*/

これに対する正しい解決策でした。 2017-07-07現在、グローバルディレクティブを手動で設定する必要があります。 JSLintドキュメント から:

/ * global * /ディレクティブは、このファイルで使用できるグローバル(通常は関数および関数を含むオブジェクト)のセットを指定するために使用されます。これは、ES6モジュールが登場する前にソースファイルをリンクするためにブラウザーで一般的に使用されていました。グローバル変数の使用は強くお勧めしませんが、残念ながらWebブラウザーでは使用する必要があります。/* global * /ディレクティブは、ブラウザーを想定オプションが選択されている場合にのみ使用できます。

そのため、以下を使用する必要があります。

/*jslint browser */
/*global window */
135
Matt Clarkson

スクリプトに次のようにコメントするだけです。

/*global window */

... your script goes here

このコメントは、windowが別の場所で定義されていることをJSLintに伝えます。

参照: http://www.JSLint.com/lint.html

JSLintは、このファイルで使用される変数が他のファイルで定義されていることをJSLintに示すことができる/* global */コメントも認識します。コメントには、名前のコンマ区切りリストを含めることができます。オプションで各名前の後にコロンを付けることができ、trueまたはfalseのいずれかです。trueは変数がこのファイルによって割り当てられることを示し、falseは割り当てが許可されないことを示します(デフォルト)。

スクリプトにコメントを適用せずにデフォルトでウィンドウをグローバルにしたい場合、ローカルpredef:["window"]ファイルのJSLINT関数内のオブジェクトリテラルパラメーターにjslint.jsを追加できます。 。

ところで、私はpredef:["$","window"]を使用してjQueryもグローバルにしています。

更新:

この答えは2009年に正解でした。現在のところ、Matt Clarksonが提供する/*jslint browser: true*/ソリューションを使用する必要があります。

76
bjoernwibben

windowがグローバルオブジェクトとして認識されていることをJSLintに知らせるには、ファイルの先頭に次のディレクティブを追加します。

/*global window*/

私はかつて使用できました:

/*jslint browser: true */

しかし、これはもう機能していないようです。さて、browserオプションに関する JSHint help によると:

selfまたはwindowを提供しません。恐ろしいグローバルオブジェクトのこれらのエイリアスを自分で要求する必要があります。

その変更がいつ行われたのかはわかりませんが、しばらくの間は地に陥りました。

4
akivajgordon

すべての警告を取り除くには、このコードで上記の両方の回答を使用する必要がありました。

/*jslint browser:true*/
/*global window*/
// eventBoiler v0.1.1 by @ryanpcmcquen
// https://github.com/ryanpcmcquen/eventBoiler
(function (win, doc) {
    'use strict';
    win.eventBoiler = function (selector, typeOfEvent, func) {
        doc.querySelector(selector).addEventListener(typeOfEvent, func);
    };
    win.eventBoiler.all = function (selectors, typeOfEvent, func) {
        Array.prototype.slice.call(doc.querySelectorAll(selectors)).map(function (i) {
            i.addEventListener(typeOfEvent, func);
        });
    };
}(window, document));

私にとって、これは JSLint Webサイト を使用するときの解決策です:

/*jslint browser:true*/
/*global window*/
3
ryanpcmcquen

すべてのファイルでこれを指定したくない場合は、次のようにeslintrc configファイルでグローバルに設定できます。

"globals": {
    "window": true,
}
1
nilsi