Иногда мне нравится смотреть на причудливость языка, на котором я код и сравнивать его с другими языками. На этот раз я подумал, что поделюсь с вами своими выводами, если вы также найдете их интересными и интересными. В этом случае я посмотрел на причуду, показанную в WTFJS , а именно делать математику с логинами. Давайте погрузимся.
true + true =?
В JavaScript мы используем оператор + для конкатената строк, а также для складывания чисел, но что происходит, когда мы переживаем несколько логитов в микс? Давай попробуем!
'Hi' + true; // output: "Hitrue" true + 'Hi'; // output: "trueHi"
Хорошо, пока, так что хорошо, JavaScript замечает, что мы используем строку с оператором + и рассматривают логическое, как строку, и объединяет их. Теперь давайте посмотрим на цифры.
5 + true; // output: 6 true + 5; // output: 6
Чего ждать? Давайте поближе посмотрим на то, что здесь происходит.
номер функции
Логическое значение передается Номер -Функция, которая преобразует его в число; Верно преобразуется в 1 и ложный до 0.
Примечание
Тип номера JavaScript имеет ограничения на то, что он может хранить, а также ограничивает то, насколько высоки могут быть числа, хранящиеся. Все числа хранятся в виде значений с плавающей запятой.
Если ему не удается преобразовать значение в число, оно вернет NAN. Он может преобразовать истинное, ложное, нулевое, а также десятичное и шестнадцатеричное число (в струнах).
Number(true); // output: 1
Number(false); // output: 0
Number(null); // output: 0
Number(undefined); // output: NaN
Number(0x7E5); // output: 2021
Number('0x7E5'); // output: 2021
Number('12.5'); // output: 12.5
Расчет с логинами Только
Когда мы добавляем только логические операнды, JavaScript все равно будет пытаться преобразовать их в числа, а не интерпретировать оба как строки.
true + true; // output: 2 true + false; // output: 1 false + false; // output: 0
За пределами дополнения
Тот же эффект, конечно, происходит с вычитаниями, умножением и подразделениями, а также при использовании унарных операторов (положительных и отрицательных – хотя NAN не будет подписан).
+true // output: 1 +false // output: 0 +null // output: 0 +undefined // output: NaN +0x75E // output: 2021 +'0x75E' // output: 2021 +'12.5' // output: 12.5
Это просто js
Вы можете знать все это уже, так что давайте сравним это с несколькими другими языками.
Php и Python также позволит расчеты с логическими. Они оба также преобразуют Верно до 1 и ложный до 0.
Java и Ржавчина С другой стороны, оба откажутся от расчетов с логическими значениями и бросить ошибку во время компиляции.
Ошибка: плохие типы операндов для бинарного оператора ‘+’ Джава
Ошибка [E0277]: не может добавить Bool к {Integer} Ржавчина
Я надеюсь, что вам было весело читать о расчетах с логическими лицами. Спасибо за чтение!
Оригинал: “https://dev.to/soliloquizin/calculations-with-booleans-1i1p”