JavaScript中这段嵌套三元运算符的运行逻辑是怎样的?
嵌套三元运算符逻辑解释
你之前的理解是完全正确的,JavaScript中三元运算符为右结合规则,你给出的代码可以等价转换为如下if-else写法,逻辑会更清晰:
let columns; if (!isUser1Readable) { // 用户1无可读权限的场景 columns = allColumns.filter(column => !columnIdsUser1.includes(column.id)); } else if (!isUser2Readable) { // 用户1有可读权限、但用户2无可读权限的场景 columns = allColumns.filter(column => !columnIdsUser2.includes(column.id)); } else { // 两个用户都有可读权限的场景 columns = allColumns; }
你疑问的解答
直接将完整allColumns赋值给columns的触发条件是:isUser1Readable求值为true 且 isUser2Readable也同时求值为true。
这段代码的整体作用是按优先级判断两个用户的列可读权限,动态返回过滤后的列配置:
- 优先校验用户1的权限,只要用户1无权限就只返回用户1可见的列
- 用户1有权限时才校验用户2的权限,用户2无权限就返回用户2可见的列
- 两个用户都有权限时,返回完整的全量列配置
内容的提问来源于stack exchange,提问作者stackuser
相关产品推荐
相关产品推荐

