string.matchをやめてregexp.testにしたほうがよいケース
今回想定するのは、アドレスに指定した文字列が含まれていたら・・のケース。
//このmatchの使い方はどうなんだろう if(location.href.match(/chart\.php|chart_j\.php|chart_jlog\.php|chart_elog\.php/)){
あるパターンがある文字列内で見つかるかどうか調べたいときに、test メソッドを使ってください(似たメソッドとして、String.search メソッドがあります)。
test - MDC
と書いてあるしね。
//これを if(location.href.match(/chart\.php|chart_j\.php|chart_jlog\.php|chart_elog\.php/)){ //↓こうする if(/chart\.php|chart_j\.php|chart_jlog\.php|chart_elog\.php/.test(location.href)){ //これは間違い if(location.href.match('chart.php'|'chart_j.php'|'chart_jlog.php'|'chart_elog.php')){
上で間違えたひとがやりたいように、エスケープがめんどくさいときはどうしたらいいんだろう。
if(location.href.match('chart.php') || location.href.match('chart_j.php') || location.href.match('chart_jlog.php') || location.href.match('chart_elog.php')){
こう? 素直にエスケープしたほうがいいね。(これも間違え、コメント参照)
if文と正規表現で、ビット演算子の|と論理演算子の||の使い分けもごっちゃになりやすいので注意。
//これでも動くけど間違ってるよね?(正規表現的に) if(/chart\.php||chart_j\.php||chart_jlog\.php||chart_elog\.php/.test(location.href)){ //こっちが正しいはず if(/chart\.php|chart_j\.php|chart_jlog\.php|chart_elog\.php/.test(location.href)){
感想
今回のケースで具体的にどんなメリットがあるんだろう。文法的に正しいってだけかな。メモリ節約とか速度改善されるのかね。