在chrome的控制台中,当我键入:
> switch(3){default:"OK"}
"OK"
Run Code Online (Sandbox Code Playgroud)
所以看起来switch语句有一个返回值.但当我这样做时:
> var a = switch(3){default:"OK"}
Run Code Online (Sandbox Code Playgroud)
它抛出语法错误"Unexpected Token switch"
是否可以捕获交换机的return语句?
hel*_*dre 39
那是因为当你将它放入Chrome控制台时,你就会将其短路.它只是打印'OK',因为它达到了默认情况,而不是实际返回的东西.
如果你想要返回一些东西,把它贴在一个函数中,并在默认情况下返回'OK'.
function switchResult(a){
switch(a){
default:
return "OK";
}
}
var a = switchResult(3);
Run Code Online (Sandbox Code Playgroud)
小智 9
也许有趣的是,;break;如果将它包装在函数中,则不需要杂乱的语句.(如heloandre所述)
function switchResult(a){
switch(a){
case 1: return "FOO";
case 2: return "BAR";
case 3: return "FOOBAR";
default: return "OK";
}
}
var a = switchResult(3);
Run Code Online (Sandbox Code Playgroud)
小智 8
ES6允许您使用立即调用的lambda来执行此操作:
const a = (() => {
switch(3) {
default: return "OK";
}
})();
Run Code Online (Sandbox Code Playgroud)