A ~ jelentése –(n + 1). Hogy egészen pontosak legyünk –1 * (parseInt(n, 10) || 0 + 1).
Elsőre nem tűnik túl használhatónak...
~1 // -2
~0 // -1
~-1 // 0
~false // -1
~true // -2
~1.3 // -2
~0.9 // -1
~~42 // 42
~0 // -1
~-1 // 0
~false // -1
~true // -2
~1.3 // -2
~0.9 // -1
~~42 // 42
Ám a következő példa után máris értelmet nyer:
var str = 'Szevasz';
if (~str.indexOf('asz')) {
// szerepel benne...
}
if (~str.indexOf('asz')) {
// szerepel benne...
}
Azaz leegyszerűsítve, a ~ megfelel a != -1 -nek.