JSLintのエラーです。すべての'var'宣言を関数の先頭に移動させる
質問
JSLintのサイトが更新され、JSスクリプトをチェックすることができなくなりました。私にとっては、この警告は重要ではなく、これを修正するために何千もの行を通過したくないので、より重大な問題を見つけたいです。
誰かこのエラーをオフにする方法、またはレガシーJSLintを使用する方法を知っていますか?
UPDATE
例
function doSomethingWithNodes(nodes){
this.doSomething();
for (var i = 0; i < nodes.length; ++i){
this.doSomethingElse(nodes[i]);
}
doSomething(); // want to find this problem
}
jslint.comの出力です。
Error:
Problem at line 4 character 8: Move all 'var' declarations to the top of the function.
for (var i = 0; i < nodes.length; ++i){
Problem at line 4 character 8: Stopping, unable to continue. (44% scanned).
問題です。
関数の上に変数を持つことは新しい要件です。このエラーでスクリプトのスキャンを停止してしまうため、コードのテストにJSLINTを使用することができません。
私は多くのコードを持っており、この警告をクリティカルなエラーとして脅かしたくありません。
2011年8月22日更新:発見 http://jshint.com よりもはるかに良さそうです。 http://jslint.com/
どのように解決するのですか?
2017年6月に更新しました。 対応状況(Internet Explorer 10 以下で JavaScript を実行していない場合など)に応じて レット の代わりに ヴァル .
例えば
for(let i=0; ...; i++)
を入れるわけがない。
var i;
から
for(var i=0; ...; i++)
を関数の先頭で使用します。 特に
JavaScriptの仕様
には許容される構文として
for
セクションで許容される構文としています (12.6)。 また、構文として
ブレンダン・アイク
は彼の例で使っています。
宣言を先頭に移動させるというアイデアは、ボンネットの下で起こっていることをより正確に反映させるためですが、そうすることは反映するだけで、影響を与えるわけではありません。
私にとっては、これは馬鹿げた期待で
for
の繰り返しに対して馬鹿げた期待です。 JSLintがそれを検出すると処理を停止してしまうので、なおさらです。
関数の先頭で宣言された変数を持つことがより読みやすいかどうかは議論の余地があります。 個人的には、イテレータ変数は使うときに宣言するのが望ましいと思います。 その変数がすでに内部で作成されていても気にせず、ここで初期化しているので安全です。
私は、イテレータ変数が使用されるときに宣言することで、誤ってグローバル化されないことを保証します(ループを別の関数に移動させると、イテレータ変数も一緒に移動します)。 これは、関数の先頭で変数宣言を維持しなければならないよりもはるかに保守しやすいものです。
今のところ、私は http://www.javascriptlint.com/online_lint.php を使うことにしました。
関連
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] 私のJavaScriptコードは "No 'Access-Control-Allow-Origin' header is present on requested resource "というエラーを受け取りますが、Postmanはそうならないのはなぜですか?
-
[解決済み] JavaScriptでページの一番上までスクロールする?
-
[解決済み] varキーワードの目的と、どのような場合に使用する(または省略する)べきですか?
-
[解決済み] JSLintが突然レポートする。"use strict" の関数形式を使用する
-
[解決済み] JavaScriptで配列の長さを初期化する方法は?
-
[解決済み】関数の前のエクスクラメーションマークは何をするのですか?
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] JavaScriptとLuaの微妙な違い [終了しました]
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] JavaScriptの検証はJSLintとJSHintのどちらを使うべきですか?[クローズド]
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] node.jsで文字列のsha1ハッシュを取得するにはどうすればよいですか?
-
[解決済み] 文字列がhtmlであるかどうかをチェックする
-
[解決済み] TypeScriptプロジェクトで既存のC#クラス定義を再利用する方法
-
[解決済み] 各オブジェクトに?重複
-
[解決済み] CORS: 認証モードは 'include' です。
-
[解決済み] Chromeのwebkitインスペクタで「Unsafe JavaScript attempt to access frame with URL...」というエラーが継続的に発生する。
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。