对于这个开关功能:
import { Screen } from 'quasar'
export const setZoomLevel = (distance) => {
const dist = parseInt(distance)
switch (Screen) {
case Screen.lg && dist >= 50:
case Screen.md && dist >= 25:
case Screen.sm && dist >= 10 && dist <= 20:
case Screen.xs && dist >= 10 && dist <= 30: return 8
case Screen.sm && dist >= 25:
case Screen.xs && dist >= 40: return 7
default: return 9
}
}
如果屏幕超小(xs),距离是50,应该返回7。但是,它总是返回9。如果我console.log(Screen.xs && dist >= 40)
结果是true
,但它从不选择在这种情况下,它总是返回默认值。
答案 0 :(得分:1)
不要将 Screen
与布尔值进行比较,这会导致您意外的结果,您应该使用 switch(true)
代替将 true 与 true 进行比较
const dist = 50;
const Screen = { xs: true };
const f = () => {
console.log(Screen.xs && dist >= 40);
switch (true) {
case Screen.lg && dist >= 50:
case Screen.md && dist >= 25:
case Screen.sm && dist >= 10 && dist <= 20:
case Screen.xs && dist >= 10 && dist <= 30:
return 8;
case Screen.sm && dist >= 25:
case Screen.xs && dist >= 40:
return 7;
default:
return 9;
}
};
console.log(f());