JavaScript互換性

JavaScriptの処理系はユーザエージェントの数だけあるといっても 過言ではない状況なので、ひとつのユーザエージェントで動作するプログラムが 別のもので動くとは限らない。実際に、同じ働きをする関数名が異なっているこ とがある。

未定義検査

上述の問題を回避するために、特定の関数が存在するかを確認する方法を 知る必要がある。

たとえば、「イベントの処理」節で 利用する event.addEventListener() 関数は Mozilla, Firefox, Opera, Safari には存在するが、InternetExplorer には存在しない。このような 場合、関数呼出しから引数リストを削った形式で関数の確認ができるので、以下 のような場合分けを行なう。

〜 略〜
if (event.addEventListener) {
  event.addEventListener(x, y, z);
} else {
  // 存在しない場合の処理
}
〜 略〜

あるオブジェクト内に関数 foo() が定義されていないときに foo を参照すると未定義を表す undefined が返る。 undefined は条件判断において偽と同じ働きを持つので、 関数が定義されていない場合は上記の場合分けが有効となる。

yuuji@koeki-u.ac.jp