小さい頃はエラ呼吸

いつのまにやら肺で呼吸をしています。


JavaScriptで関数が存在するかどうかを確認する

はじめに

この記事では、JavaScriptで、オブジェクトが特定の関数を持っているかどうかを確認する方法について書いています。

よくわかるJavaScriptの教科書
たにぐち まこと
マイナビ
売り上げランキング: 24,381

JavaScriptで関数が存在するかどうかを確認する

JavaScriptで、オブジェクトが特定の関数を持っているかどうかを確認するには、以下の2つの方法が使えます。

  • 関数がnullやundefinedでないかを調べる
  • typeofの戻り値を参照して'function'であるかどうかを調べる

たとえば、以下のようなチェックボックスがonclick関数を持っているかどうかを判定する場合を想定します。

<html>
<body>
<input type="checkbox" id="check" onclick="alert('hoge')>チェックボックス
</body>
</html>
nullかどうかで判定する

check要素のonclickがnullであるかどうかは以下のコードで判定できます。

if (document.getElementById("check").onclick) {
  document.getElementById("check").onclick();
}

以下のサイトによると、nullもundefinedもfalseを表わす。このため、上記のコードでonclick関数が存在しない場合は、onclick()の呼び出しは行われない。

typeofがfunctionかどうかで判定する
if (typeof(document.getElementById("check").onclick) == 'function') {
  document.getElementById("check").onclick();
}

typeof 演算子を使うと関数が存在するかどうかを確かめる事ができます。
https://developer.mozilla.org/ja/Core_JavaScript_1.5_Reference関数 - MDC はてなブックマーク - 関数 - MDC