我正在嘗試使用如下的switch陳述句。但即使狀態是301,case case (status > 200 && status < 400)也被忽略了,結果是 "默認 "情況。
我做錯了什么?是不是不能在case陳述句中使用條件?
status = 301。
switch (status) {
case 0:
case 200:
console.log('200')。
break。
case (status > 200 && status < 400) 。
console.log('200-400'/span>)。
break。
case 404:
console.log('404')。
break。
default:
console.log('Si è verificato un errore irreversibile.' )。
}
最后我用一個簡單的if解決了問題,但我想知道為什么這不起作用。
uj5u.com熱心網友回復:
這不是switch/case在JavaScript中的作業方式;你只能匹配值,而不是條件。這里發生的情況是,status > 200 && status < 400評估為true,而true顯然不等同于301。
事實上,一個簡單的if/else if/.../else鏈是這里的通常解決方案。
uj5u.com熱心網友回復:
這可以通過以下方式來實作:
const status = 301;
switch (true) {
case status === 0:
case status === 200:
console.log('200'/span>)。
break。
case (status > 200 && status < 400) 。
console.log('200-400'/span>)。
break。
case status === 404:
console.log('404')。
break。
default:
console.log('Si è verificato un errore irreversibile.' )。
}
但我同意@Thomas的建議,對于這類問題,我們應該優先使用if/else鏈。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/314523.html
標籤:
下一篇:C++Lambda運算式
