// meet [Boolean] 是否需要全部满足
// caps[Array] 需要满足的条件
// userCaps [Object] 当前用户拥有的权限
if (meet === false) {
return caps.find((cap) => {
if (userCaps[cap] === true)
return true
}) != null ? true : false
} else {
return caps.find((cap) => {
if (userCaps[cap] !== true)
return true
}) != null ? false : true
}
这是一段前端判断用户是否有权限的句子,如果条件是 meet 则需要全部满足,否则只要满足其一。
其实我是想吧这两个 return 合并为一个,因为只有中间 true 判断和结尾的 false : true 相反,但是可读性巨差无比
就像下面这样
return caps.find((cap) => {
if (meet ? userCaps[cap] !== true : userCaps[cap] === true)
return true
}) != null ? !meet : meet
在大厂这样写 js 会被辞退吗
1
UnluckyNinja 2018-03-15 14:38:21 +08:00 1
some() every()了解一下
|
2
hoythan OP @UnluckyNinja 浏览器兼容有点高额,我虽然用了 ES6 但是最终还是要转 5 的
|
3
hoythan OP @UnluckyNinja 我看错了兼容性
|
5
hoythan OP ```
return meet ? caps.some(() => { }) : caps.every(() => { }) ``` |
6
hoythan OP ```
return meet ? caps.every(() => { }) : caps.some(() => { }) ``` |
7
UnluckyNinja 2018-03-15 14:49:41 +08:00 1
@hoythan #3 注意下 every 对空数组固定输出 true (这两个函数一个假定 false 一个假定 true,遇到不同值直接跳出遍历立即返回),应该就没什么坑了
|
8
hoythan OP @UnluckyNinja 💖💕💖💕💖💕💖💕💖💕💖💕💖💕💖💕💖💕💖💕💖💕💖💕
|