JScript スクリプトのトラブルシューティング

更新 : 2007 年 11 月

すべてのプログラミング言語には、初心者だけでなく経験を積んだユーザーでも陥りやすい、思いがけない危険があります。ここでは、JScript スクリプトを記述するときに発生する可能性のある問題をいくつか紹介します。

構文エラー

プログラミング言語の構文は自然言語の文法に比べてかなり厳密であるため、スクリプトを記述するときには細心の注意を払う必要があります。たとえば、文字列のパラメータを指定するときに、引用符で囲むのを忘れると問題が発生します。

スクリプトの解釈の順序

Web ページでは、JScript の解釈はブラウザの HTML 解析プロセスに依存します。<HEAD> タグ内のスクリプトは、<BODY> タグの内部にあるテキストよりも先に解釈されます。したがって、<BODY> タグで作成されるオブジェクトは、ブラウザが <HEAD> 要素を解析する時点では存在せず、スクリプト内では操作できません。

sxbe1ea4.alert_note(ja-jp,VS.90).gifメモ :

この動作は Internet Explorer 固有の動作です。ASP および WSH には、他のホストで適用される異なる実行モデルがあります。

型の強制変換

JScript は、自動強制変換が行われる、型指定の緩い言語です。このため、異なる型を持つ値どうしは厳密には等しくありませんが、次に示す式の例は true として評価されます。

"100" == 100;
false == 0;

型と値の両方が同じであることを確認するには、厳密等価演算子 === を使用します。次の例は、どちらも false に評価されます。

"100" === 100;
false === 0;

演算子の優先順位

式が評価されるときの演算の実行順序は、演算子が記述されている順序よりも、演算子の優先順序に依存します。次の式では、減算演算子の方が乗算演算子よりも前にありますが、乗算が先に実行されます。

theRadius = aPerimeterPoint - theCenterpoint * theCorrectionFactor;

詳細については、「演算子の優先順位」を参照してください。

オブジェクトでの for...in ループの使用

オブジェクトの各プロパティに対して for…in ループを使用する場合、オブジェクトの各フィールドがどのような順序でループ カウンタ変数に代入されるかは、予測することも制御することもできません。さらに、実装する言語が変われば、この順序も変わる可能性があります。詳細については、「for...in ステートメント」を参照してください。

with キーワード

with キーワードは、指定したオブジェクトに既に存在するプロパティを扱う場合には便利ですが、このキーワードを使用してオブジェクトにプロパティを追加することはできません。オブジェクト内に新しいプロパティを作成するには、オブジェクトを明示的に指定する必要があります。詳細については、「with ステートメント」を参照してください。

this キーワード

this キーワードはオブジェクトの定義内に存在しますが、this キーワードやその他の類似したキーワードを使用しても、関数がオブジェクトの定義中にない場合は、現在実行中の関数を参照できません。ただし、その関数がメソッドとしてオブジェクトに割り当てられる場合は、関数内で this キーワードを使用してそのオブジェクトを参照できます。詳細については、「this ステートメント」を参照してください。

Internet Explorer または ASP.NET でスクリプトを出力するスクリプトの作成

</SCRIPT> タグがインタープリタで解釈されると、現在のスクリプトは終了します。"</SCRIPT>" 自体を表示するには、2 つ以上の文字列として記述してください。たとえば、"</SCR" と "IPT>" のように記述すると、それらを表示するステートメントの中で 2 つを連結できます。

Internet Explorer での暗黙のウィンドウ参照

複数のウィンドウを同時に開くことができるため、暗黙的なウィンドウ参照はすべて、現在のウィンドウを指します。その他のウィンドウを指すには、明示的な参照を使用する必要があります。

参照

処理手順

Visual Studio での JScript コードの作成

概念

Visual Studio での JScript のデバッグ

その他の技術情報

JScript コードの作成、コンパイル、およびデバッグ