Zde je malý trik, který jsem pochytil při procházení některých pluginů, které jsem musel znovu upravit nebo rozšířit
var arr = [ 1, 2, 3, 'foo' ];
// old way
if (arr.indexOf('foo') > -1) {
console.log('"foo" is in "arr"!');
}
// new way
if (~arr.indexOf('foo')) {
console.log('"foo" is in "arr"!');
}
Napadlo mě – jak to funguje ? Je to kvůli tomuto malému operátorovi, kterého jsem nikdy nepoužil ani neviděl:
Bitový NOT-operátor ~
Převrací všechny bity čísla, nejsem si jistý, jak to přesně funguje, ale zdá se, že -1
je jediný případ, kdy skončíte s falešným číslem, nebo spíše falešným výrazem:0
To znamená, že toho můžeme využít a použít v indexOf (zatím jsme však neviděli žádné jiné použití).
// you can also negate the statement, no separate parantheses needed
if (!~dailyRoutine.indexOf('☕️')) {
console.log('Not a life worth living');
}
Co si o tom myslíš? Myslím, že to určitě vypadá úhledně a šetří některé znaky v kódu, ale mohlo by to zmást lidi, kteří si to přečtou později (nebo si to vyhledávají jako já lol)