ビット反転演算子(~)でindexOfの判定
nodeのqsモジュールのコード読んでたらよくわからん書き方があった。
if (~key.indexOf(']')) { ... }
って感じだったんだけど、チルダってなんだっけと思って。
チルダはビット反転演算子で、整数をビット反転させると符号を反転させて1引いた数になる。こんな感じ。
console.log(~-4); // 3 console.log(~-3); // 2 console.log(~-2); // 1 console.log(~-1); // 0 console.log(~0); // -1 console.log(~1); // -2 console.log(~2); // -3 console.log(~3); // -4 console.log(~4); // -5
つまり-1のときだけ0になるので、indexOfと組み合わせるとあんな感じに書けるというわけみたい。