Number.isNaNをIE11で使う

開発

とある自作WebページがChromeだとうまく動作するのに、IE 11だとうまく動作していませんでした。

調べてみると、原因はJavaScriptのNumber.isNaNというECMAScript6の仕様について、Chromeでは対応しているがIE11では対応していないという状況のため…

最近のブラウザであれば、昔に比べて対応可否を意識するケースは減ってきたのかと思っていたのですが、JavaScript仕様の正式公開前機能への対応というところで差があるのですね。

そういうわけでIEでもisNaN相当の機能が動くよう、JavaScriptのソースに下記の処理を追加して解決。
これだけなのに長らく放置してしまった…

Number.isNaN = Number.isNaN || function(any) {
  return typeof any === 'number' && isNaN(any);
};

上記のようにブラウザの機能の差を埋めることをpolyfillと言うようです。例えば今回の場合「Number.isNaN polyfill」のように検索すると、polyyfillするための実装方法が見つかりました。