Причуды и особенности странного JavaScript 😵

Привет! Всем привет!!! В этой статье я расскажу о странных и фантастических особенностях и характеристиках странного JavaScript. JavaScript — это очень необычный язык программирования. Он не похож на другие языки программирования, но при этом является мощным языком. Его можно использовать для создания фронтенд- и бэкенд-приложений, мобильных и настольных приложений. Посетите мою предыдущую статью, чтобы узнать больше об основах JavaScript. => Современный JavaScript объясняется так, как вы еще никогда не видели 🔥.

Итак, без лишних слов перейдем непосредственно к его странностям.


!10 + !10

!10 + !10 ---> 0 

Вход в полноэкранный режим Выход из полноэкранного режима

Положительные числа в javascript всегда истинны.

Логическое не (!) представляет собой противоположность. Таким образом, противоположностью true является false.

Следовательно, false преобразуется в 0.

Поэтому ответом будет 0.


[] + []

[] + [] ---> ""

Вход в полноэкранный режим Выход из полноэкранного режима

При использовании оператора сложения оба операнда — левый и правый — преобразуются в примитивы.

Преобразование массива в примитив возвращает его значение по умолчанию, которое для объектов с действующим методом toString() является результатом вызова object.toString().

Для массивов это то же самое, что и вызов array.join().

Объединение пустого массива приводит к пустой строке.

Следовательно, оператор сложения возвращает конкатенацию двух пустых строк, которая является пустой строкой.

Для еще более подробного объяснения читайте статью доктора Акселя Раушмайера =>.


[2,4,6,8,10] + [12,14,16,18] = «2,4,6,8,1012,14,16,18»

[2,4,6,8,10] + [12,14,16,18] ---> "2,4,6,8,1012,14,16,18"

Вход в полноэкранный режим Выход из полноэкранного режима

Массивы преобразуются в строки и затем конкатенируются.

Это происходит по тому же правилу, что и выше.


NaN === NaN

NaN === NaN ---> false

Войти в полноэкранный режим Выход из полноэкранного режима

Так как это решение было принято комитетом IEEE-754.

Функция isNaN не существовала в то время.

Для подробного объяснения читайте ответ на StackOverflow от =>Stephen Canon


NaN++

NaN++ ---> NaN

Вход в полноэкранный режим Выйти из полноэкранного режима

NaN буквально означает Not A Number.

Следовательно, NaN не может быть увеличено.


undefined + true | undefined + false

undefined + true ---> NaN

undefined + false ---> NaN

Вход в полноэкранный режим Выйти из полноэкранного режима

True и False могут быть преобразованы в числа.

undefined не может быть преобразовано в число.

Однако !!undefined + false => 0, потому что (!!undefined означает false).

!!undefined === false — истина

Следовательно, если сложить undefined с любым булевым числом, результатом всегда будет NaN.


+0 === -0

+0 === -0 ---> true

Вход в полноэкранный режим Выйти из полноэкранного режима

Положительный ноль и отрицательный ноль всегда равны в JavsScript.


[,,,].length

[,,,].length ---> 3

Войти в полноэкранный режим Выйти из полноэкранного режима

Этот [,,,] просто означает массив, содержащий три пустых слота.

Последняя запятая является запятой в конце.


true + false

true + false ---> 1

Войти в полноэкранный режим Выйти из полноэкранного режима

Оба булевых числа преобразуются в соответствующее числовое представление, и их значения складываются.

Число(true) —> 1

Число(false) —> 0

1 + 0 —> 1


0.2 + 0.1 === 0.3

0.2 + 0.1 === 0.3 ---> false

Вход в полноэкранный режим Выход из полноэкранного режима

Просто подумайте о представлении 1/3 в виде десятичного значения. Это невозможно сделать точно! Точно так же 1/10 (десятичная дробь 0.1) не может быть точно представлена в двоичном виде как «десятичное» значение; повторяющийся шаблон после десятичной дроби продолжается до бесконечности. Это значение не является точным, и поэтому вы не можете выполнять с ним точные вычисления, используя обычные методы с плавающей точкой.


2,4 | 1,2,3,4,5 | «причуды», «особенности»

2,4 ---> 4
1,2,3,4,5 ---> 5
"quirks","features" ---> "features"

Вход в полноэкранный режим Выход из полноэкранного режима

Оператор запятая (,) оценивает каждый из своих операндов (слева направо) и возвращает значение последнего операнда.


!!»»

!!"" ---> false

Вход в полноэкранный режим Выход из полноэкранного режима

Булево представление пустой строки(«») равно false.

Boolean(«») —> false

Итак, !!false —> false

Внутри логического оператора Not(!) все, что имеет значение, является истинным, а все, что не имеет значения, является ложным.


+!![]

+!![] ---> 1

Вход в полноэкранный режим Выход из полноэкранного режима

Булево представление пустого массива [] — истина.

!!!true всегда истина.

Оператор плюс преобразует в числовое представление данного булева значения.

Следовательно, +true равно 1.


true == «истина» —> false

true == "true" ---> false

Вход в полноэкранный режим Выйти из полноэкранного режима

Оба эти значения преобразуются в числа.

Число(true) —> 1

Number(«true») —> NaN

Следовательно, 1 == NaN является ложным


020 — 05

020 - 05 ---> 11

Вход в полноэкранный режим Выход из полноэкранного режима

020 в JavaScript рассматривается как восьмеричное число.

Его значение в десятичной системе счисления равно 16.

Следовательно, 16 — 5 равно 11


«» — — «»

"" - - "" ---> 0

Вход в полноэкранный режим Выйти из полноэкранного режима

Пустая строка преобразуется в 0

Буквально это означает (+0) — (-0).

Следовательно, (+0) — (-0) — это ноль.


ноль + 420

null + 420 ---> 420

Вход в полноэкранный режим Выйти из полноэкранного режима

Числовое представление нуля всегда равно 0.

Число(null) —> 0

Следовательно, 0 + 420 равно 420


(ноль — 0) + «0».

(null - 0) + "0" ---> "00"

Вход в полноэкранный режим Выход из полноэкранного режима

Число (null) равно 0

Таким образом, 0 — 0 равно 0.

0 + «0» объединяет их и дает в качестве ответа «00».


Следуйте за мной на Github и в Twitter

Оцените статью
Procodings.ru
Добавить комментарий