在Go中,我可以使用没有条件的switch
,而是在case
分支中提供条件,例如:
package main
import (
"fmt"
"time"
)
func main() {
t := time.Now()
switch {
case t.Hour() < 12:
fmt.Println("Good morning!")
case t.Hour() < 17:
fmt.Println("Good afternoon.")
default:
fmt.Println("Good evening.")
}
}
(取自https://tour.golang.org/flowcontrol/11)
我喜欢这种方法,它比if-else if-else if-…
更清洁。不幸的是,这种结构在JavaScript中是不可能的。
如何使用一些(奇怪的)语言结构尽可能地创建看起来的东西?
答案 0 :(得分:3)
您可以使用与Go中相同的构造:
var now = new Date();
switch (true) {
case now.getHours() < 12:
console.log('Good morning');
break;
case now.getHours() < 17:
console.log('Good afternoon');
break;
default:
console.log('Good evening');
}
答案 1 :(得分:1)
您可以在案例条款中使用conditions。
var a = 2;
switch (true) { // strict comparison!
case a < 3:
console.log(a + ' is smaller than 3');
break;
}
答案 2 :(得分:1)
滥用语言,
var now = new Date();
now.getHours() < 12 && console.log('Good morning') ||
now.getHours() < 17 && console.log('Good afternoon') ||
now.getHours() >= 17 && console.log('Good evening')