5 Удивительных особенностей JavaScript, которые вас удивят

4c1ec8bc 6536 4d73 b922 8682e03c001e HTML

JavaScript — один из самых популярных языков программирования, но у него есть свои уникальные особенности, которые могут удивить даже опытных разработчиков. Эти необычные поведения не являются багами, а скорее специфическими чертами языка, которые делают его изучение еще более увлекательным. Давайте рассмотрим пять таких примеров.

1. Как написать «banana» в JavaScript необычным способом?

Вы можете написать слово «banana» в JavaScript с помощью очень нетривиального трюка:

let word = 'b' + 'a' + + 'a' + 'a';
console.log(word); // baNaNa

Как это работает?

Когда вы пишете 'b' + 'a' + + 'a' + 'a', JavaScript выполняет следующие действия:

  • 'b' + 'a' возвращает 'ba'.
  • Затем +'a' пытается преобразовать 'a' в число, но это невозможно, поэтому результатом становится NaN.
  • В итоге строка 'b' + 'a' + + 'a' + 'a' превращается в 'baNaNa', где NaN добавляется как строка.

2. Логическая математика: вычисления с true и false

В JavaScript вы можете использовать логические значения true и false для математических операций:

true + true; // -> 2
(true + true) * (true + true + true); // -> 6

Как это работает?

В JavaScript логические значения преобразуются в числа:

  • true становится 1.
  • false становится 0.

Это возможно благодаря тому, что JavaScript автоматически приводит логические значения к числовым с помощью конструктора Number() или оператора +.

+true; // 1
+false; // 0

Таким образом, складывая true и false, вы фактически работаете с числами.

3. Почему NaN — это число?

В JavaScript есть специальное значение NaN, которое означает «не число». Но что происходит, если вы проверите его тип?

typeof NaN; // 'number'

Как это работает?

действительно является числомNaNХотя это может показаться странным, NaN — это особый тип числа, который указывает на невалидный результат.

4. Доступ к свойствам объекта через массив

В JavaScript можно получить доступ к значению свойства объекта через массив:

let data = { number: 1 },
array = ["number"];

console.log(data[array]); // -> 1

Как это работает?

Оператор [] в JavaScript автоматически преобразует аргумент в строку с помощью метода toString(). Когда массив содержит только один элемент, toString() возвращает этот элемент в виде строки. Таким образом, data[array] эквивалентно data["number"].

console.log(["test"].toString()); // 'test'

5. Почему сортировка чисел в JavaScript работает странно?

Попробуйте отсортировать массив чисел с помощью метода sort():

[1, 5, 2, 10, 30].sort();

Результат может вас удивить:

[1, 10, 2, 30, 5]

Как это работает?

Метод sort() по умолчанию преобразует элементы массива в строки и сортирует их на основе значений в формате UTF-16. Поэтому числа срав

Чтобы отсортировать массив чисел правильно, нужно передать функцию сравнения:

console.log([1, 5, 2, 10, 30].sort((a, b) => a - b));
// [1, 2, 5, 10, 30]

Заключение

JavaScript полон интересных и необычных особенностей, которые делают его таким уникальным. Эти примеры показывают, что язык всегда может преподнести неожиданные сюрпризы, даже когда кажется, что вы знаете его досконально. Продолжайте изучать JavaScript, и вы обязательно найдете еще много интересного!

Оцените статью