JS 代码小技巧积累

341 阅读1分钟

用来记录自己每次学到的代码小技巧

片段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