switch (fruit) { case "banana": // ... break; case "apple": // ... break; default: // ... }
上面代码根据变量fruit的值,选择执行相应的case。如果所有case都不符合,则执行最后的default部分。需要注意的是,每个case代码块内部的break语句不能少,否则会接下去执行下一个case代码块,而不是跳出switch结构。
需要注意的是,switch语句后面的表达式与case语句后面的表示式,在比较运行结果时,采用的是严格相等运算符(===),而不是相等运算符(==),这意味着比较时不会发生类型转换。
switch结构不利于代码重用,往往可以用对象形式重写。
var o = { banana: function (){ return }, apple: function (){ return }, default: function (){ return } }; if (o[fruit]){ o[fruit](); } else { o['default'](); }
var lwFruit = { "Apple": function () { alert("我是小苹果"); }, "Banana": function () { alert("我是邪恶的香蕉!嘿嘿!"); }, "Default": function () { alert("未知的水果啦!"); } }; var varFruit = "333"; if (lwFruit[varFruit]) { lwFruit[varFruit](); } else { lwFruit.Default(); }