目次
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を使用する。
参考リンク
Underscore.jsの判別用メソッドisXXの一覧表と使い方と注意点