isFinite関数の問題について

数値型の判定にisFinite関数を使う

SIEのJavaScriptでは、数値かどうかのチェックに、isFinite関数を使っています。isNaN関数はInfinityを真と判定してしまう問題があったので、isFiniteを使うようになりました。

引数を数値型に変換する問題点が

ただし、isFinite関数には、一つ問題点があって、仕様上、引数を数値型に強制的に変換してしまいます。
たとえば、

isFinite([]);
isFinite("20");

はすべて、trueとなってしまいます。
この仕様の問題に対して、Crockford氏は、typeofも合わせて使うようなやり方を書籍の「javaScript: The Good Parts」で提案しているのですが、コードの量が大きくなってしまいます。
isNumber関数を独自に作ったとしても、軽量化という観点からは、好ましいと私は思っていません。

SIEではisFinite関数を中心に

軽量化を重視する立場から、typeofを使わず、isFinite関数だけでSIEは判定しています。また、Specもその点を配慮しています。