見出し画像

場合分けのswitchで引っかかった。

const contents  = location.pathname.split('/').slice( -2, -1);
let itemName = 'リスト';

switch (contents) {
    case 'title':
        itemName = 'タイトル';
        break;
    case 'btn':
        itemName = 'ボタン';
        break;
・・・
・・・
}
  1. 現在地のディレクトリ名を取得

  2. その内容に合わせて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に挑戦中ですがなかなか先は長い・・・

この記事が気に入ったらサポートをしてみませんか?