export const setID = (v) => {
console.log('执行setID',v);
let l = v.length;
switch(l)
{
case l < 6 :
console.log('qq');
break;
default:
console.log('11111');
}
}
v
是傳入的字串,這段程式碼第一個console
正常執行,第二個console
無論任何情況都不執行,現在可以肯定的是我的switch...case...
出了問題,求教問題在哪裡
扔个三星炸死你2017-06-28 09:30:02
改成下面這個
const setID = (v) => {
console.log('执行setID',v);
let l = v.length;
switch(l < 6)
{
case true :
console.log('qq');
break;
default:
console.log('11111');
}
}
不過你這個完全可以用一個if語句:
if (l < 6) {
console.log("qq");
} else {
console.log("1111");
}
依照原先的寫法應該是l
和l < 6
是否相等,l
是一個整數,表示字串的長度,l<6
是一個布林值,整數和布林值是不全等的,所以永遠都會走default
語句;
原先寫法的誤解:不是case
語句後面的為true就會執行,而是switch表達式裡面的內容l
和case語句後面的內容l<6
全等時才符合;假設v="111"
,此時l=3
l<6
為true,但是3!==true
,所以走的是default語句。
習慣沉默2017-06-28 09:30:02
你的l確定是小於6的?
switch(n)
{
case 1:
执行代码块 1
break;
case 2:
执行代码块 2
break;
default:
n 与 case 1 和 case 2 不同时执行的代码
}