String indexOf() :返回某个指定的字符串值在字符串中首次出现的位置(对大小写敏感),如果检索的字符串值没有出现,则返回 -1。
Array indexOf() :返回数组中某个指定的元素位置。如果没找到指定元素则返回 -1。
indexOf 结合位反操作
原文:https://blog.csdn.net/weixin_34143774/article/details/85558633
补码:在计算机系统中,数值用补码来表示。任何数值 n 的位反 ~n === -(n + 1)
例:
~8 === -9 | ~-9 === 8
~1 === -2 | ~-2 === 1
~0 === -1 | ~-1 === 0
只有 ~-1 才等于 0,对非 -1 值取反永远不为 0。所以n !== -1可简化为~n,n === -1可简化为!~n
举例:if (status === 301 || status === 302) {}
利用 Array 和 indexOf,上面的代码可简化成:if ([301, 302].indexOf(status) !== -1) {}
利用位反操作,可进一步简化:if (~[301, 302].indexOf(status)) {}