場合分けのswitchで引っかかった。
const contents = location.pathname.split('/').slice( -2, -1);
let itemName = 'リスト';
switch (contents) {
case 'title':
itemName = 'タイトル';
break;
case 'btn':
itemName = 'ボタン';
break;
・・・
・・・
}
現在地のディレクトリ名を取得
その内容に合わせてitemNameの内容を切り替える
という場合分けをswitchを使って行おうと思ったのだけど
なぜかどれにも一致しない('リスト'のまま変わらない)という結果ばかりが返ってきて頭を抱えたお話。
結果:switch は文字列の型まで見る
jQuery畑出身で文字列の型とかにめっきり弱いので
なかなか答えにたどり着かなかったのだけど
swicth の一致条件を if で表すならば
if( contents === 'title'){ --- 一致したときの動作 ---}
ということでした。イコールが3つ。
なのでswicthを使う場合は文字列の型まで一致させないといけない。
const contents = String( location.pathname.split('/').slice( -2, -1) );
String()を使って文字列化させてあげることで、狙った通りの場合分けができました。
型を判定する方法
では初期状態はどういう型だったのか。
下記で確認できます。
const toString = Object.prototype.toString;
console.log(toString.call( ---確認したい文字列--- ));
contents を入れてみたところ、[object Array]が返ってきました。
スラッシュで分割して、必要な部分だけ抜き出していたとはいえ
配列オブジェクトだったんですね。
こういうことがあると、生のjsとか、他の言語とかをきっちりやらないとなぁと思います。
脱jQueryに挑戦中ですがなかなか先は長い・・・
この記事が気に入ったらサポートをしてみませんか?