在大部分动态语言中,case后面是可以接变量甚至是表达式的。比如说你可以这么做:var a = 0, b = 1, c = 3; switch(true) { case a < b: alert("a比b小"); break; case a < c: alert("a比c小"); break; } 基本上这种类型都可以用if else来写,但是用switch写可读性会好一些。如果需要性能的话可以自己手动实现一个跳转表,现有的动态语言一般都支持一等函数和属性列表,跳转表的实现也并不是特别难。所以其实也就是一个取舍的问题。