JavaScript - это язык, который работает по-разному и делает себя довольно интересным благодаря своей многоцелевой активности.

Js имеет 2 типа значений: первый - это примитивные значения, а
затем - объекты и функции. Но в этих двух значениях есть 9 отдельных типов.

● Undefined (undefined), используется для непреднамеренно пропущенных значений.
● Null (null), используется для намеренно пропущенных значений.
● Логические значения (true и false), используемые для логических операций.
● Числа (-100, 3,14 и другие), используемые для математических вычислений.
● Строки («привет», «абракадабра» и другие), используемые для текста.
● Символы (Необычный), используется для скрытия деталей реализации.
● BigInts (необычный и новый), используется для вычисления больших чисел.

● Объекты ({} и другие), используемые для группировки связанных данных и кода.
● Функции (x = ›x * 3 и другие), используемые для обозначения кода.

В этом типе Null и Undefined одинокие.

Если мы зададим Js вопросы в выражениях, они ответят нам, например, на выражение 3+ 3 ответят 6.

Мы можем проверить тип любого элемента с помощью выражения typeof. Например, typeof (5) - это строковое значение «число».

Обработка ошибок, использование «try..catch» ………….

Конструкция try..catch имеет два основных блока: первый - это try, а затем catch:

Механизм JavaScript сначала считывает написанный код, а затем запускает его. Ошибки, возникающие на этапе чтения, называются ошибками «времени анализа» и не подлежат исправлению (изнутри этого кода). Это потому, что движок вообще не понимает код.

Таким образом, try..catch может обрабатывать только ошибки, возникающие в допустимом коде. Такие ошибки называются «ошибками времени выполнения» или, иногда, «исключениями».

Если исключение происходит в «запланированном» коде, например в setTimeout, то try..catch его не улавливает: если исключение происходит в «запланированном» коде, например в setTimeout, try..catch его не улавливает.

Стиль кодирования

Код должен быть всегда аккуратным и чистым. Наш код - это наша единственная личность. Это один из видов искусства.

Чтобы написать чистый код, нам нужно сделать следующее:

Синтаксис:

"Фигурные скобки"

В большинстве проектов JavaScript мы видим, что фигурные скобки написаны в «египетском» стиле с открывающей скобкой на той же строке, что и соответствующее ключевое слово, а не на новой строке. Перед открывающей скобкой также должно быть место.

Длина линии

Никто не любит читать длинную горизонтальную строку кода, что является скучной задачей. Лучше всего разделить длинную горизонтальную линию.

Отступы

Есть два типа отступов:

Горизонтальные отступы: 2 или 4 пробела.

Вертикальные отступы: пустые строки для разделения кода на логические блоки.

Точка с запятой

Точка с запятой должна стоять после каждого оператора, даже если ее можно пропустить, хотя она почти не используется в JavaScript.

Уровни вложенности

Следует стараться избегать слишком многоуровневой вложенности кода.

Размещение функций

Если вы пишете несколько «вспомогательных» функций и код, который их использует, есть три способа организовать функции.

  1. Объявите функции выше код, который их использует.
  2. Сначала код, затем функции
  3. Смешанный: функция объявляется там, где она используется впервые.

Гиды по стилю

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

Автоматизированные ЛИНТЕРы

Линтеры - это инструменты, которые могут автоматически проверять стиль вашего кода и вносить предложения по улучшению.

Комментарии

Как известно, комментарии могут быть однострочными: начиная с // и многострочными: /* ... */.

Обычно мы используем их, чтобы описать, как и почему работает код.

Плохие комментарии

Новички обычно используют комментарии, чтобы объяснить, «что происходит в коде». Но в хорошем коде количество таких «поясняющих» комментариев должно быть минимальным.

Рецепт: функции вычитания

Иногда полезно заменить фрагмент кода функцией.

Хорошие комментарии

Есть два типа хороших комментариев. Они есть:

  1. Опишите архитектуру
  2. Документирование параметров функции и использования

Что такое кроссбраузерное тестирование?

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

  • Различные браузеры, кроме одного или двух, которые вы регулярно используете на своих устройствах, в том числе немного более старые браузеры, которые некоторые люди могут все еще использовать, которые не поддерживают все новейшие, самые блестящие функции CSS и JavaScript.
  • Различные устройства с разными возможностями, от новейших лучших планшетов и смартфонов до смарт-телевизоров, вплоть до дешевых планшетов и даже более старых функциональных телефонов, на которых могут работать браузеры с ограниченными возможностями.
  • Люди с ограниченными возможностями, которые используют Интернет с помощью вспомогательных технологий, таких как программы чтения с экрана, или не используют мышь (некоторые люди используют только клавиатуру).

Проблемы с кроссбраузерностью обычно возникают по следующим причинам:

  • иногда в браузерах есть ошибки или они по-разному реализуют функции. Эта ситуация намного менее плохая, чем была раньше; назад, когда IE4 и Netscape 4 конкурировали за доминирующий браузер в 1990-х годах, компании-разработчики браузеров намеренно реализовывали разные вещи по-разному, чтобы получить конкурентное преимущество, что сделало жизнь разработчиков адом. В наши дни браузеры намного лучше следуют стандартам, но иногда все еще появляются различия и ошибки.
  • некоторые браузеры могут иметь разные уровни поддержки технологических функций, чем другие. Это неизбежно, когда вы имеете дело с передовыми функциями, которые браузеры только реализуют, или если вам нужно поддерживать действительно старые браузеры, которые больше не разрабатываются, которые, возможно, были заморожены (т.е. над ними больше не выполняется новая работа. ) задолго до того, как была изобретена новая функция. Например, если вы хотите использовать на своем сайте передовые функции JavaScript, они могут не работать в старых браузерах. Если вам нужно поддерживать старые браузеры, возможно, вам придется не использовать их или преобразовать код в старомодный синтаксис, используя при необходимости какой-то кросс-компилятор.
  • Некоторые устройства могут иметь ограничения, из-за которых веб-сайт работает медленно или плохо отображается. Например, если сайт был разработан так, чтобы хорошо смотреться на настольном ПК, он, вероятно, будет выглядеть крошечным и его будет трудно читать на мобильном устройстве. Если ваш сайт содержит множество больших анимаций, это может быть нормально для планшета с высокими характеристиками, но может быть вялым или прерывистым на устройстве низкого уровня.

Привязки блоков

Традиционно способ работы объявления переменных был одной из сложных частей программирования на JavaScript. В большинстве языков на основе C переменные (или привязки) создаются в том месте, где происходит объявление. Однако в JavaScript это не так. То, где фактически создаются переменные, зависит от того, как их объявлять, и ECMAScript 6 предлагает варианты, упрощающие управление областью видимости.

Объявления Var и подъем

Объявления переменных с использованием var обрабатываются так, как если бы они находились в верхней части функции (или в глобальной области, если они объявлены вне функции), независимо от того, где происходит фактическое объявление; это называется подъемом.

Объявления на уровне блоков

Объявления уровня блока - это объявления, которые объявляют переменные, недоступные за пределами заданной области действия блока. Области блока создаются:

  1. Внутри функции
  2. Внутри блока (обозначается символами { и })

Связывание блоков в циклах

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

Глобальные привязки блоков

Еще одним отличием let и const от var является их поведение в глобальной области видимости. Когда var используется в глобальной области видимости, он создает новую глобальную переменную, которая является свойством глобального объекта (window в браузерах). Это означает, что можно случайно перезаписать существующий глобал, используя var.

Новые передовые методы привязки блоков

Пока ECMAScript 6 находился в разработке, было широко распространено мнение, что вы должны использовать let по умолчанию вместо var для объявления переменных. Для многих разработчиков JavaScript let ведет себя именно так, как, по их мнению, var должен вести себя, поэтому прямая замена имеет логический смысл. В этом случае можно использовать const для переменных, требующих защиты от модификации.

Функции

Функции являются важной частью любого языка программирования, и до ECMAScript 6 функции JavaScript практически не изменились с момента создания языка. Это оставило накопившиеся проблемы и нюансы поведения, которые позволяли легко совершать ошибки и часто требовали большего количества кода только для достижения очень простого поведения.

Функции со значениями параметров по умолчанию

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

Работа с безымянными параметрами

Функции JavaScript не ограничивают количество параметров, которые могут быть переданы, до количества определенных именованных параметров. Вы всегда можете передать меньше или больше параметров, чем указано официально. Значения параметров по умолчанию дают понять, когда функция может принимать меньше параметров, и ECMAScript 6 также стремился улучшить проблему передачи большего количества параметров, чем определено.

Оператор распространения

Оператор спреда тесно связан с остальными параметрами. В то время как остальные параметры позволяют указать, что несколько независимых аргументов должны быть объединены в массив, оператор распространения позволяет указать массив, который следует разделить, и передать его элементы в качестве отдельных аргументов функции.

Функции блочного уровня

В ES 3 и ранее объявление функции внутри блока (функция уровня блока) было технически синтаксической ошибкой, но все браузеры по-прежнему поддерживали ее. К сожалению, каждый браузер, в котором разрешен синтаксис, ведет себя немного по-другому, поэтому рекомендуется избегать объявления функций внутри блоков (лучшей альтернативой является использование выражения функции). , Строгий режим ECMAScript 5 приводил к ошибке всякий раз, когда объявление функции использовалось внутри блока. В ECMAScript 6 функция doSomething() считается объявлением уровня блока, и к ней можно получить доступ и вызвать в том же блоке, в котором она была определена.

Стрелочные функции

Одна из самых интересных новых частей ECMAScript 6 - это стрелочная функция. Стрелочные функции, как следует из названия, определены с новым синтаксисом, в котором используется «стрелка» (=>). Но стрелочные функции ведут себя иначе, чем традиционные функции JavaScript, по ряду важных аспектов:

  • Нет this, super, arguments и new.target привязок - значения this, super, arguments и new.target внутри функции являются ближайшими и не содержат узких функций.
  • Невозможно вызвать с new - стрелочные функции не имеют [[Construct]] метода и поэтому не могут использоваться в качестве конструкторов. Стрелочные функции вызывают ошибку при использовании с new.
  • Нет прототипа - поскольку вы не можете использовать new для стрелочной функции, прототип не нужен. Свойство prototype стрелочной функции не существует.
  • Невозможно изменить this - значение this внутри функции нельзя изменить. Он остается неизменным на протяжении всего жизненного цикла функции.
  • Нет arguments объекта. Поскольку у стрелочных функций нет arguments привязки, для доступа к аргументам функции необходимо полагаться на параметры named и rest.
  • Отсутствие повторяющихся именованных аргументов - стрелочные функции не могут иметь повторяющиеся именованные аргументы в строгом или нестрогом режиме, в отличие от функций, не являющихся стрелками, которые не могут иметь повторяющиеся именованные аргументы только в строгом режиме.

Это всего лишь проблеск фундаментального JavaScript. Чтобы свободно работать с JavaScript, нужно искать, читать и узнавать больше.