JavaScript Switch 语句没有返回正确的值
JavaScript Switch statement is not returning the correct value
对于这个开关函数:
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,它应该 return 7. 但是,它总是 returns 9. 如果我 console.log(Screen.xs && dist >= 40)
结果是 true
,但它从不选择那种情况,它总是 return 是默认值。
与其将 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());
对于这个开关函数:
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,它应该 return 7. 但是,它总是 returns 9. 如果我 console.log(Screen.xs && dist >= 40)
结果是 true
,但它从不选择那种情况,它总是 return 是默认值。
与其将 Screen
与布尔值进行比较,这会导致您出现意想不到的结果,您应该使用 switch(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());