用来记录自己每次学到的代码小技巧
片段1 :
当我们需要判断 某一个值是否存在一个 array 当中, 我们常常会用到 indexOf 通过判断返回的是否是>=0 来判断是否包含, 但是我们有一种更优雅的写法
if(myArray.insdexOf(a)>=0){
// myArray 包含 a
}
然而此处直接暴露
>=0,称为“抽象渗漏”,意思是在代码中暴露了底层的实现细节
根据
indexOf我们知道返回 -1 代表未找到. 而-1 的翻转为 0 所以
改写: 利用~这个翻转来告知我们 ()
if (~myArray.indexOf(a)) { // true
// 找到匹配!
}
// 当没有找到的时候
if (!~myArray.indexOf(a)) { // true
// 没有找到匹配!
}
片段 2:
|| 和 && 的巧用:
console.log('a'||'b'); // 'a'
console.log( ''||'b' ); // 'b'
console.log( '' && 'b' ); // ''
console.log( 'a' && 'b' ); // 'b'
a||b表示如果 a 为 真值 返回 a, 否则返回 b
通俗理解就是: js 引擎会看 a 是否成立, 如果 a 成立的话就直接返回了, 他就不往下去看了. 否则就会走一下 第二个选项 b, 不管此时 b 是真还是假, 都会返回 b
a && b表示如果 a 为 真值, 那么返回 b, 否则返回 a
通俗理解就是: js 引擎会看 a 是否成立, 如果 a 成立的话就往下看看 b 是否成立, 不管 b 成立与否,都会返回 b