cod*_*me- 2 javascript if-statement dry
假设我们有六个变量:a,b,c,x,y,z
.有没有更好的方法来写这个if语句并不那么难读?
if (((!a && !x) || a === x) && ((!b && !y) || b === y) && ((!c && !z) || c === z))
Run Code Online (Sandbox Code Playgroud)
现在让这些变量更长,这段代码将更复杂,可读性更低.
一种显而易见的方法是使重复的代码功能化:
function checkVars(a, b) {
return !a && !b || a === b;
}
// ...
if (checkVars(a, x) && checkVars(b, y) && checkVars (c, z)) {
// ...
}
Run Code Online (Sandbox Code Playgroud)
正确地提到,你应该给这个函数一个描述性的名字,显示它真正的作用.显然,它检查给定的变量是否是假的或它们是否相同,所以一个明显的选择是falsyOrIdentical
.然后你的if
陈述将成为真正的自我评论:
if (falsyOrIdentical(a, x)
&& falsyOrIdentical(b, y)
&& falsyOrIdentical(c, z)) {
// here goes the code
}
Run Code Online (Sandbox Code Playgroud)
如果要检查更多变量,Pavlo的方法(使用slice.call(arguments)
技巧将所有变量转换为数组的单个函数,然后应用此函数直到它使用该方法的每个元素失败every
)是最好的.但话又说回来,我真的很想知道所有这些变量不应该成为集合的一部分 - 所以你就可以马上去every
了.
归档时间: |
|
查看次数: |
171 次 |
最近记录: |