JavaScript 开关技术不好? [复制]
Posted
技术标签:
【中文标题】JavaScript 开关技术不好? [复制]【英文标题】:Bad technique on JavaScript switch? [duplicate] 【发布时间】:2016-01-24 04:37:24 【问题描述】:javascript 可能是一种棘手的语言,有很多陷阱。在这个人为的例子中,一个简单的函数在一个开关中返回。没有中断,因为函数会立即返回。
function getUpperName (animal)
switch(animal)
case 'dog':
return 'Dawg';
case 'cat':
return 'Kitty';
default:
return 'Unknown';
这是否被认为是不好的形式,是否会产生不必要的副作用?还是这个标准的JS编程。
【问题讨论】:
因为return
直接return,不执行下面的,应该没问题。
【参考方案1】:
在 switch
中不使用 use break
是完全标准的,其行为是明确定义的。
例如:
[0, 1, 2, 3].map(function f(n)
var r = 0;
switch(n)
case 2: ++r;
case 1: ++r;
return r;
); // [0, 1, 2, 0]
但是,大多数人认为这种行为是违反直觉的。所以他们更喜欢在case
的末尾跳出switch
。所以他们使用break
。如果你也想跳出这个功能,可以使用return
。
【讨论】:
【参考方案2】:您的代码很好。在这种情况下,您不需要任何break
,它不会适得其反。使用JSLint 检查您的代码始终是一个好习惯。
就我个人而言,我尽量让我的函数在函数末尾只返回一个返回值,因为这样更容易将日志语句添加到代码中。
【讨论】:
【参考方案3】:没关系,这是一种常见的做法,因此您不会产生不必要的副作用,因为您实际上是通过返回调用者来离开函数。
另一个提示。有时,您甚至可以看到switch
声明的以下形式,这对我来说更清晰:
function getUpperName (animal)
switch(true)
case animal === 'dog':
return 'Dawg';
case animal === 'cat':
return 'Kitty';
default:
return 'Unknown';
【讨论】:
以上是关于JavaScript 开关技术不好? [复制]的主要内容,如果未能解决你的问题,请参考以下文章