var value = "abcdef"; var result = (/abc/).test(value); // true以下でもOK。こっちはStringオブジェクトのmatch()を使っている。
var value = "abcdef"; var result = !!value.match(/abc/); // truematch()はマッチした結果を配列で返し、全くマッチしない場合はnullを返す。なので、単にマッチしたかどうかの結果だけを知りたい場合は、!演算子を2回使えばよい。
- value.match(/abc/) → abc
- !value.match(/abc/) → !abc → false
- !!value.match(/abc/) → !!abc → !false → true
上記の!abcがfalseになるのは、abcが型変換でブーリアン型(true)になるからである。
型変換でfalseになる値は以下の通りで、それ以外はtrueである。
- 数値0
- 数値NaN
- null値
- undefined値
- 空文字
JavaScriptのとあるソースを呼んでて、!!value.match(/abc/)なるものがあって、何やってるのかよく分からなかったからメモを残しました。単純にRegExpのtest()を使うのとどっちがいいですかね?
0 件のコメント:
コメントを投稿