在JavaScript中没有条件的Go的交换机最接近的等价物是什么?

时间:2017-06-09 08:04:27

标签: javascript go

在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中是不可能的。

如何使用一些(奇怪的)语言结构尽可能地创建看起来的东西?

3 个答案:

答案 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')