鍍金池/ 問答/HTML5  網(wǎng)絡(luò)安全  HTML/ 碰到個奇怪的問題,switch 語句條件本來應(yīng)該成立,但是確走了default,

碰到個奇怪的問題,switch 語句條件本來應(yīng)該成立,但是確走了default,用 if 直接可以,這是為什么呢?

現(xiàn)在有三個 組件 ,A組件,B組件,C組件
當(dāng)我從A組件跳轉(zhuǎn)到B組件的時候,B組件寫

    beforeCreate(){
      let status=this.$route.query.status;
       switch (status){
           case 1: document.title="生產(chǎn)監(jiān)管火電明細"
               break;
           case 2: document.title="在線經(jīng)營火電明細"
               break;
           case 3: document.title="生產(chǎn)監(jiān)管水電明細";
               break;
           default:
           console.log(status == 1);
            document.title="我是沒有執(zhí)行";
               break;
       }
    },

瀏覽器的名字會變,但是我從B組件跳轉(zhuǎn)到C組件的時候,在由C組件跳轉(zhuǎn)到B組件的時候瀏覽器的名字變?yōu)榱?- - (因為B組件的title的名字是動態(tài)的,所以我把初始值變?yōu)?--)

clipboard.png

所以現(xiàn)在的 switch 里面的等于1 的沒有執(zhí)行, 我在default里面打印的也返回true
為什么不執(zhí)行呢?
我改為if語句就可以了,但是switch 里面 case等于1 為什么不執(zhí)行呢?

    beforeCreate(){
        //改變?yōu)g覽器title名字
        let status=this.$route.query.status;
        if(status == 1){
            document.title="生產(chǎn)監(jiān)管火電明細"
        }else if(status == 2){
            document.title="在線經(jīng)營火電明細"
        }else if(status == 3){
            document.title="生產(chǎn)監(jiān)管水電明細"
        }
      },

這個問題我很好奇到底是什么原因?qū)е碌模?/p>

回答
編輯回答
厭遇

case中要求的是常量,一般是不能進行邏輯判斷的, 所以這也是if語句優(yōu)于switch語句的地方!

2017年2月9日 21:08
編輯回答
凹凸曼

因為你的 statsu 的值為字符串 "1", case 里面寫的卻是數(shù)字 1, case 使用 === 做的嚴格比較. if 語句則使用 == 做非嚴格比較, 會自動轉(zhuǎn)換類型.

要么把 case 里面的數(shù)字全寫成字符串, 要么 let status = parseInt(this.$route.query.status, 10);status 轉(zhuǎn)成整型.

2017年1月27日 16:33