web-dev-qa-db-ja.com

jsLintエラー:「定義される前にsomefunction()が使用されました」

まだ定義されていない関数を使用していると、JSLintが文句を言うのはなぜですか?重要なのは、関数が定義されているということです。そして、何かがその関数を呼び出すと、その関数が存在し、物事は機能します。

以下のコードを見てください。

function foo()
{
   // calls bar()
};

function bar()
{
   // calls foo()
};

JSLintを満足させるような方法で2つのメソッドを整理する方法はありません。この問題にどのように対処しますか?

23

この答えを参照してください:

「定義前に使用された」JSおよびTitanium Developerと競合

基本的に、foo = function() { ... }フォームを使用する場合は、上部でvar foo, bar;を宣言して、JSLintエラーを回避できます。

14
MrTrick

JSLintは私が知る限りこれに対処することはできませんが、JSLintに基づくJSHintは、この問題に適切な方法で取り組んでいます。

「latedef」プロパティを使用して「false」に設定するだけです。それでも、この種の問題のある変数定義を検出したいが、関数式を使用してこれらの関数の巻き上げを許可したい場合は、「latedef」:「nofunc」を設定できます。

それをチェックしてください ここ

17

これに非常によく似た問題を処理しましたが、問題は関数呼び出しの後にスクリプトが配置されていたことでした。

function zzzzz () {
   aaaaa();
   ccccc();
  }

function aaaaa() {
 blah = bla blah blah;
 }
function bbbbb() {
 blah = bla blah blah;
 }
function ccccc() {
 blah = bla blah blah;
 }

スクリプトの後に関数呼び出しを配置すると問題が解決したので、基本的にはソートされた日数の間答えが表示されなかったので、試してみてください

function aaaaa() {
 blah = bla blah blah;
 }
function bbbbb() {
 blah = bla blah blah;
 }
function ccccc() {
 blah = bla blah blah;
 }

function zzzzz () {
   aaaaa();
   ccccc();
  }

GooodLuckと私はこれが役立つことを願っています

0
Morph