Inter-Net.PRO

тильда В JavaScript есть такой редкоприменяемый оператор обозначаемый символом тильда - ~. Вероятно что вы даже не знаете где находится этот символ на клавиатуре, поэтому стоит упомянуть что находится он в английской раскладке в левом верхнем углу сразу под клавишей Esc, на этой клавише также находится буква Ё.


Оператор Тильда ~ в JS

  Оператор ~ в JavaScript является оператором побитового НЕ .

  Если вы редко работаете с бинарными данными, то для вас это мало о чём говорит. Например, цифра 8 выглядит в двоичной системе : 1000. Когда вы используете ~ на этой цифре, она преобразует каждый бит в противоположное значение. То есть, каждая из 1 станет 0 и наоборот. Так ~8 будет равно 7, двоичное представление которого выглядит следующим образом : 0111. Единственная проблема заключается в том, что JavaScript использует то, что называется «Two's Complement», чтобы иметь возможность представлять положительные и отрицательные числа в двоичном формате. Поэтому в джаваскрипте ~7 будет равно -8.

  Если вы хотите получить более внятную картину, то вам лучше всего потестировать этот оператор самостоятельно (можно в той же консоле браузера), а так же посмотрите примеры ниже.


Примеры использования ~ в javascript

  Тильда получила наиболее широкое применение при поиске значения в массиве. Классически оно выглядит так:

if (arr.indexOf(item) >= 0) {
    // item найден в массиве
} else {
    // не найден
}

Эта же логика, но уже с тильдой, принимает более короткий вариант записи:

if (~arr.indexOf(item)) {
    // item найден в массиве
} else {
    // не найден
}

Округление вниз

  Можно встретить код когда две тильды подрят ~~ используют вместо Math.floor( ) для округления дробных чисел вниз до целого числа:

console.log(~~14.65); // 14
console.log(~~(-21.72); // -21

Но обратите внимание что делает одинарная тильда с дробными числами:

console.log(~14.65); // -15
console.log(~(-14.65)); // -13

Поэтому прежде чем применять тильду, нужно быть уверенным и понимать что вы делаете.


Преобразования строки в число

  Всем известно, что в javascript число + строка в результате вернёт строку:

console.log(2 + '3'); // вернёт '23'

  Поэтому в JavaScript, чтобы приобразовать строку к числу, применяют унарный плюс:

console.log(2 + +'3'); // вернёт 5

  Эту же операцию можно произвести поставив две тильды ~~

console.log(2 + ~~'3'); // вернёт 5

  Но не стоит неосознанно тыкать тильды в код и забывать, что при преобразовании строки к числу при помощи тильд происходит также округление:

console.log(5 + ~~'3.25'); // → 8

Авторизация

Войти через соцсети: