当还使用类型和字符串时,JS switch case 不适用于数字
JS switch case not working with numbers when also using types and strings
我有个小问题。我有一个参数变量,它可以是未定义的类型或数字。但是,当我尝试检查号码时,它不起作用。为什么?
let parameters = 2
// returns number
console.log(typeof parameters)
// returns 2
console.log(parameters)
switch (parameters) {
case undefined:
res.send(users).status(200);
break;
case "download":
// creates file for all users
handler.createAndSendFile("users", "csv", users, res);
break;
case parameters === 'number':
console.log("Number getById 1");
break;
case (typeof parameters === 'number'):
console.log("Number getById 2");
break;
case (parameters instanceof Number):
console.log("Number getById 3");
break;
case (!isNaN(parameters)):
console.log("Number getById 4");
break;
case parameters > 0:
console.log("Number getById 4");
break;
default:
console.log("default")
}
您正在将 parameters
与其他情况下的值进行比较,在以下情况下:
- 参数===未定义
- 参数===“下载”
- parameters === (parameters === 'number') // 是 'true'
- 参数===(参数类型==='number')
- ...
如果你想评估一个操作,你可以这样做:
let parameters = 2;
switch (true) {
case !parameters:
res.send(users).status(200);
break;
case parameters === "download":
handler.createAndSendFile("users", "csv", users, res);
break;
case typeof parameters === 'number':
console.log("Number getById 2");
break;
}
我有个小问题。我有一个参数变量,它可以是未定义的类型或数字。但是,当我尝试检查号码时,它不起作用。为什么?
let parameters = 2
// returns number
console.log(typeof parameters)
// returns 2
console.log(parameters)
switch (parameters) {
case undefined:
res.send(users).status(200);
break;
case "download":
// creates file for all users
handler.createAndSendFile("users", "csv", users, res);
break;
case parameters === 'number':
console.log("Number getById 1");
break;
case (typeof parameters === 'number'):
console.log("Number getById 2");
break;
case (parameters instanceof Number):
console.log("Number getById 3");
break;
case (!isNaN(parameters)):
console.log("Number getById 4");
break;
case parameters > 0:
console.log("Number getById 4");
break;
default:
console.log("default")
}
您正在将 parameters
与其他情况下的值进行比较,在以下情况下:
- 参数===未定义
- 参数===“下载”
- parameters === (parameters === 'number') // 是 'true'
- 参数===(参数类型==='number')
- ...
如果你想评估一个操作,你可以这样做:
let parameters = 2;
switch (true) {
case !parameters:
res.send(users).status(200);
break;
case parameters === "download":
handler.createAndSendFile("users", "csv", users, res);
break;
case typeof parameters === 'number':
console.log("Number getById 2");
break;
}