JavaScriptデバッグ中のエラーの種類について

By , 2009年9月25日

function
今回はFirebugなどで、JavaScriptのスクリプトをデバッグしたときに現れる、エラーについてまとめてまとめてみました。

デバッグモード
「FirebugなどのデバッガでJavaScriptの構文エラーが表示されているけど意味がわからないよ・・・」

というときなどに、デバッガが表示してくれるエラーの意味が、どのような意味なのか?、ということがわかれば、問題の原因が特定しやすくなり、よりいっそうスクリプトを書きやすくなると思います。それでは、詳細は続きから

ここでは、よく使われるorよく表示されるJavaScript構文のエラーについてまとめてみました。以下、早見表です。
・JavaScriptError:URL (番号)
・「構文のスペルミス(alertをaletと書くなど) is not defined.」エラー
・unterminated string literal./missing ) after argument list.エラー
・write cannot be converted to a function.エラー
・return used outside a function.
・missing } after function body.
・missing { before function body.
・エラーは出ないが定義してある関数が呼び出されない
・サブウィンドウが表示されない
・missing ) after argument list.
・missing ( before formal parameters.
・missing operator in expression.
・missing operator in expression. (2)
・syntax error. ( <!C-命令~)
・true has no properties.
・命令 is not a function.
・変数名 is not defined.
・test for equality (==) mistyped as assignment (=)? Assuming equality test.
・オブジェクト名 is not a number.
・変数名 is not a numeric literal.
・syntax error. (if (5 =< 2)~)



JavaScriptのデバッグエラー構文エラーの例と構文の解説まとめ

JavaScriptError:URL (番号)
エラーのあるJavaScriptの含まれているHTMLの場所を表示するだけでなくクリックすると、そのURLへジャンプする。
line n:とも表記される。
 n行目にエラーを引き起こしたScript文がある、ただし他の部分が原因で、エラーになった可能性がある。

n行目にエラーがあると表示されたからといって、必ずしもn行目でエラーが発生したとは限りません。n行目にエラーの原因が見あたらない場合は、n行目周辺の行をチェックすることをオススメします。エラー文の一つの目安として重宝できます。

「構文のスペルミス(alertをaletと書くなど) is not defined.」エラー
意味:この構文は定義されていない。

解説:
スペルミス(つづりが間違っている)ということなので。aletなどをalertに修正すれば動作する。

エラー文章
<script language=”JavaScript”>
!–>
alrt(“TEST STRING”);
–>
</script>

unterminated string literal./missing ) after argument list.エラー
意味:終端の文字リテラルが正常に囲まれていません。

解説:
また、このエラーは文字列が正常に囲まれていない時に発生する。例えばdocument.write(“ダブルクォーテーションから’);のように「”」(ダブルクォーテーション)で囲み始めたのにも関わらず、終わりが「’」(シングルクォーテーション)になっている場合など。囲みの最後の文字を”にすれば動作する。これと同様に’で囲み始めたら’で終わらなければならない。

エラー構文の例
<script language=”JavaScript”>
<!–
document.write(‘test”);
–>
</script>


write cannot be converted to a function.エラー
意味:関数名に定義済みオブジェクト名を使用することは出来ません。

解説:
関数名にオブジェクトの名前を使用すると発生する。関数名を定義されている命令以外のものに修正すれば動作する。

エラー構文の例
<script Language=”JavaScript”>
<!–
function document(){
document.write(“OpenSpace”);
}
document();
// –>
</script>

関数名 is not defined.
意味:関数名が定義されていません。

解説:
関数の呼び出し時に発生する。関数が定義されていないか、呼び出し側の関数名が間違っている。JavaScriptの変数名や関数名は大文字と小文字を区別して解釈するため、大文字小文字の違いがある場合はエラーになる(aaaとAAAはそれぞれ別の関数or変数として解釈される)。関数名を正しく修正すれば直る。

エラー構文の例
<script language=”JavaScript”>
<!–
function print(){
document.write(“Test JavaScript”);
}
Print();//大文字と小文字が区別されるため、エラーとなる
// –>
</script>

return used outside a function.
意味:関数外で使用された。

解説:
return文で戻るところが見つからないor関数外で使用すると発生する。関数外では使用しない事。

エラー構文の例
<script Language=”JavaScript”>
<!–
return;//関数外での使用のため(リターンで戻る場所がない)、エラーとなる。
// –>
</script>

missing } after function body.
意味:{}の形式で関数or中身がとじられていません。

解説:
関数が「}」カッコで閉じられていない。}をつければ直る。

エラー構文の例
<script Language=”JavaScript”>
<!–
function err(){//{で始めたのに・・・
O = window.open(“”,”Page”);

//}で閉じられていない!
// –>
</SCRIPT>

missing { before function body.
意味:関数の{が始まっていない。

解説: 
関数の定義で{がない。{をつければ直る。

エラー構文の例
<script Language=”JavaScript”>
<!–
function err()//{のはじまりがない
w2 = window.open(“”,”New Page”);
}//}で終わっているのに・・・
// –>
</script>

エラーは出ないが定義してある関数が呼び出されない
解説:同じ名前の関数を定義している。JavaScriptでは関数の二重定義をしてもエラーにならない。この場合、呼び出される関数は最後に定義したものになる。関数名を重複しないように変更すれば直る。

エラー構文の例
<script language=”JavaScript”>
<!–
function err(){document.write(“err1″);}
function err(){document.write(“err2″);}//同じ名前の関数が定義された場合は、最後に書かれた方の関数が呼び出される
err();
// –>
</script>

サブウィンドウが表示されない
意味:window.open()で2番目の引数(ウィンドウタイトル)に半角の空白(スペース)が入ると表示されない。空白を削除すれば動作する。

エラー構文の例
<script Language=”JavaScript”>
<!–
w2 = window.open(“”,”New Page”);
// –>
</script>

missing ) after argument list.
意味:引数が)で閉じられていません。

解説:
 )で閉じられていない。関数、命令の引数でカッコで閉じられていない場合に発生する。)を付ければ直る。

エラー構文の例
<script Language=”JavaScript”>
<!–
function err(){ document.write(“error” }// )で閉じられていない!
err();
// –>
</script>

missing operator in expression.
意味:呼び出しにて(が記述されていません。

解説:
命令の呼び出しで(が抜けている。(を付ければ直る。

エラー構文の例
<script Language=”JavaScript”>
<!–
function err(){ document.write”error”) }
err();
// –>
</script>

missing ( before formal parameters.
意味:関数の呼び出しで(が記述されていません。

解説:
関数の呼び出しで(が抜けている。(を付加すれば直る。

エラー構文の例
<script Language=”JavaScript”>
<!–
function err){ document.write(“error”) }//関数errの(が記述されていない
err();
// –>
</script>

missing operator in expression. (2)
解説:命令を続けて記述すると発生する。JavaScriptでは複数の命令を1行に記述する場合、;(カンマ)で命令の間を区切る必要がある。命令の間に「;」をつければ直る。

エラー構文の例
<script Language=”JavaScript”>
<!–
document.write(“error1″)document.write(“error2″)//1行にわたる複数の命令にも関わらず「;」が書かれていない
// –>
</script>

syntax error. ( <!C-命令~)
意味:構文エラー
 
下記の例では、document.write文中に<script></script>が組みになっている。scriptタグのネスティング(入れ子)と解釈されてしまうためエラーになる。次のように修正すれば直る。
document.write(“<”+”script>”);

エラー構文の例:
<script Language=”JavaScript”>
<!–
document.write(“<script><!–”);//scriptタグの入れ子と解釈されてしまう
document.write(“documnet.write(99);</SCRIPT>”);
// –>
</script>

true has no properties.
解説:命令を続けて記述している。別々に記述すれば直る。

エラー構文の例
<script Language=”JavaScript”>
<!–
document.write(“OpenSpace1″).write(“OpenSpace2″);//続けて命令を記述している
// –>
</script>

命令 is not a function.
解説:関数ではないのに関数呼び出しをしている。または関数のメソッドになっている。関数を作成する。メソッドの前にオブジェクトを指定すれば直る。

エラー構文の例:
<script Language=”JavaScript”>
<!–
document.write(“OpenSpace1″.write(“OpenSpace2″));
// –>
</script>

変数名 is not defined.
変数に値が入っていない(宣言していない)のにも関わらずif(a == 1)などのように参照しようとした。参照前にa = 0;などのように値を設定しておけば直る。

<script Language=”JavaScript”>
<!–
if(a == 1) document.write(“12345″);//aの値は何も入っていない状態のためエラーとなる。
// –>
</script>

test for equality (==) mistyped as assignment (=)? Assuming equality test.
解説:下記の例では、if文の条件式が間違っている。a == 0のように記述しなければ、ならない所をa = 0のように代入文になっている。=を==にすれば直る。

エラー構文の例:
<script Language=”JavaScript”>
<!–
if(a = 1) document.write(“12345″);//if文の()にて==(比較演算子)とするところを=(代入演算子)を使っている。
// –>
</script>

オブジェクト名 is not a number.
解説:オブジェクトを演算しようとした。変数名に変更すれば直る。

エラー構文の例:
<script Language=”JavaScript”>
<!–
document.write(Math/9);//Mathオブジェクトを演算に使っているのでエラー
// –>
</script>

変数名 is not a numeric literal.
解説:変数に入っているデータが数値ではない。文字列などが入っている。eval()関数等で数値に変換してから演算すれば直る。

エラー構文の例
<script Language=”JavaScript”>
<!–
a = “TGSHAKL”;
document.write(a/9);//aは文字列(string型)のため演算は出来ない。
// –>
</script>

syntax error. (if (5 =< 2)~)
解説:不等号の記述が間違っている。=<は間違いなので、<=にすれば直る。

構文エラーの例
<script Language=”JavaScript”>
<!–
if (5 =< 2) document.write(“OK!”);
// –>
</script>


コチラもあわせてどうぞ!
  1. JavaScriptメモ帳、その1
  2. JavaScriptメモ帳、その2
  3. 高機能なJavaScriptエディタ「Overbyte」
  4. JavaScript用エディタ「JavaScriptist」
  5. サイトにプログラムコードを貼り付けるpreタグのCSS

3 Responses to “JavaScriptデバッグ中のエラーの種類について”

  1. dekoracja okien より:

    Hello, you used to engrave magnificent, on the contrary the last a small amount of posts have been kinda boring… I skip your vast writings. Past some posts are merely a insignificant small piece outdated of track! extend on!

Leave a Reply


OfficeFolders theme by Themocracy