とあるプロジェクトで、エラーがでたのでコンソールみたら、「isFinite()
って関数はありません」ってエラー。
「まじか・・・」と思いつつ、調べたら「polyfill」使えばいけるって書いている記事を見つけたのでメモ。
isFinite
とは?
Javascriptに実装されている関数です。有限数かどうかを確認します。
有限数とは?
有限の大きさ:ある数Nに対してそれより大きな数Mが存在する。 ということ。
よくわからんけど。無限についてはなんとなく。無限という数値は(x+1)ということができないから。それ以外は有限数と。
ようはjsで計算ミスったときによくみるInfinity
がそれにあたるのかなと思いました。
使ってみる
動いたよ!
だがしかし。。。
> isFinite(10) true > isFinite('10') true
おうおうおう(^ω^;
数値と文字列の型チェックはしてくれないのね。ということで、ドキュメントにもありますが、堅牢性の高いチェックをするならNumber.isFinite('0')
を使いなさい。とのこと。
> Number.isFinite(10) true > Number.isFinite('10') false
うむ。
しかしIEには実装されていない(´;ω;`)ブワッ
_人人人人人人人人人人人人人人人人_
> Internet Explorer 未サポート<
 ̄YYYYYYYYYYYYYYYY ̄
泣いた
polyfill
を使えばいける
polyfill
とは?
要するにHTML/JS/CSSの最新仕様や、まだドラフトとか提案段階の機能を、古いブラウザとかでも先取りして動かせるようにしてくれるライブラリをまとめて "Polyfill" というカテゴリで扱ってるらしい
ふーむ。
使ってみる
Qiitaの記事にはこう書いてある。
Number.isFinite = Number.isFinite || function(any) { return typeof any === 'number' && isFinite(any); };
これでいけました!
(jsって動的にメソッドを追加できるんかいな・・・phpみたいやな)
まとめ
jsの型について知らないことが多くて困っています。。。
NaN
とか一回一覧を用意して覚えたほうがいいなぁー。