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语句。