JavaScriptライブラリis.jsを使用しないほうが良い5つの理由

JavaScriptライブラリis.jsを使用しないほうが良い5つの理由

JavaScriptライブラリ is.jsとは

簡単にデータをチェックするJavaScriptライブラリ。

例えば下記のような記述でデータの判定がtrueかfalseかを返すことが可能で複数や1つ以上の一致の判定もできる。

is.number(42);
=> true

is.not.number('42');
=> true

is.all.number('foo', 1);
=> false

is.any.number({}, 2);
=> true

is.all.number([42, 'foo', 1]);
=> false

期待とは違う判定

is.jsには現在110個の判定メソッドがあるがこのうちのいくつかは期待しているものとは異なる判定を返す。

例1 is.equal

例えばis.equalはnumber,string,regexp,booleanのみしか判定できない。

そのためis.equal([], [])やis.equal(null, null)はtrueではなくfalseになる。

var a = 1, b = [], c = null;
is.equal(a, a); // => true
is.equal(b, b); // => false
is.equal(c, c); // => false

例2 is.empty

is.emptyはその名の通りカラのときにtrueを返す。しかしis.jsにおけるカラ判定はオブジェクト、配列、文字列が対象でそれ以外はfalseを返してしまう。

var a = {}, b = [], c = '', d = null;
is.empty(a); // => true
is.empty(b); // => true
is.empty(c); // => true
is.empty(d); // => false

例3 is.finite

is.finiteは値が有限であればtrueを返すのが正しい挙動のはずだがis.jsは配列やbooleanなどでもtrueを返す。あきらかに間違った挙動。

日本向けサイトに不向き

海外のライブラリなのである意味あたりまえだが日本向けの郵便番号や電話番号判定メソッドは用意されていない。また、is.spaceは全角スペースには対応していない。

環境によって返る値が異なるものも

例えばis.onlineはSafariやChromeなどのWebkit系ブラウザとそれ以外のブラウザとでは環境によって返る値が異なる。

個人的結論

is.jsは使用しない。データのチェックにはunderscore.jsを使用する。

参考リンク

is.jsの返す値の一覧表

Underscore.jsの判別用メソッドisXXの一覧表と使い方と注意点