October 21, 2021

Урок по JS #2.

Строгий режим "use strict"

Директива применяется для того, чтобы активировать работу старого кода (до 2009 года). Когда директива находится в начале скрипта, весь сценарий работает в современном режиме.

Строгий режим можно применять к отдельным функциям.

Важно, чтобы "use strict" находился в первой исполняемой строке скрипта, иначе он не будет применен.

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

По умолчанию, в браузерах отключен строгий режим. Включить его можно:

  1. Открыв консоль, использовать Shift+Enter для ввода нескольких строк и написать в верхней use strict.
  2. Обернуть код в функцию.

Переменные

Назначение переменных - хранение информации, данных и т.д.

Переменная в JS создается с помощью ключевого слова let. Также, переменная нуждается в имени. Данные помещаются в переменную с помощью оператора присваивания =. Пример:

let message = 'Hello!';

В старых скриптах используется другое ключевое слово - var (вместо let).

Изменять значение (имя) переменной мы можем множество раз, однако, старое значение при этом удаляется из нее. Также можно объявить несколько переменных и скопировать данные из одной в другую. Пример:

let hello = 'Hello world!';
let message;

message = hello;

alert(hello); // Hello world!
alert(message); // Hello world!

Переменная может быть объявлена только один раз, впоследствии стоит использовать ее без let.

Некоторые языки программирования не предполагают в себе изменение значения переменной (Scala и Erlang). Для сохранения чего-то другого, необходимо создать новую переменную.

Правила присвоения значения переменной:

  • имена переменных задаются с помощью букв, цифр и символов $ и _;
  • первый символ не должен быть цифрой;
  • длинные имена обозначаются "верблюжьей нотацией";
  • для имен переменных регистр имеет значение;
  • имя может быть задано на любом языке, но традиционным считается английский;
  • имя переменной не может быть задано зарезервированным именем - let, class, return и function.

В строгом режиме невозможно создать переменную без использования слова let. Если в скрипте num = 5; прописано без ключевого слова, то это признак старого кода.

Константы

Иными словами это неизменяемая переменная, назначается с помощью const.

Константы могут использоваться в качестве слов-псевдонимов для труднозапоминаемых значений, которые известны до начала выполнения скрипта. Пишутся они с заглавными буквами и подчеркиванием, например const COLOR_RED = "#F00";. Используются для жестко задокидованных значений (код цвета, координаты и др.)

Существуют константы, которые вычисляются в процессе выполнения сценария, но затем остаются неизменными. Такие константы прописываются "верблюжьейНотацией".

Название переменной должно отражать всю суть содержания, хранящегося в ней.

Правила обозначения имени переменной:

  • использовать лаконичные имена - например userName;
  • избегать использование аббревиатур, кроме важных случаев;
  • достигать максимальной описательности имени;
  • переменные, связанные друг с другом, должны отражать "корневое" имя.

В любой ситуации лучше создавать новые переменные, а не заменять существующие.

Типы данных

Числовой тип (number)

Может быть как целым числом, так и дробным с плавающей точкой. С числами можно выполнять различные операции: умножение *, деление /, сложение +, вычитание - и т.д.

Существуют и другие типы чисел - «специальные числовые значения»:

  • Infinity или математическая бесконечность ∞. Это особое значение, которое больше любого числа. Можно получить в результате деления на 0, либо просто задать его;
  • Антипод предыдущего значения со знаком минус -Infinity;
  • NaN означает вычислительную ошибку. Любая операция с этим значием, возвращает его, т.е. если где-то в математическом выражении есть NaN, то результатом вычислений с его участием будет NaN;

У такого типа данных есть ограничения - число не может быть больше, чем (253-1) (т. е. 9007199254740991), или меньше, чем -(253-1) для отрицательных чисел.

53 над цифрой 2 - степень.

Для обозначения чисел, выходящих за эти пределы используется тип BigInt. Он позволяет работать с целыми числами произвольной длины. Чтобы задать такое значение, нужно добавить n в конце числа:

const bigInt = 1234567890123456789012345678901234567890n;

Строка (string)

Данные, которые должны быть заключены в кавычки. Строка может содержать ноль, один или множество символов.

В JS существует три типа кавычек:

  1. Двойные кавычки: "Привет".
  2. Одинарные кавычки: 'Привет'.
  3. Обратные кавычки: `Привет` - позволяют встраивать переменные.

Вообще, обратные кавычки обладают широкой функциональностью. Они могут встраивать выражения или переменные в строку с помощью символов ${…}.

В отличие от других языков программирования (C или Java) в JS отсутствует отдельный тип данных для одного символа.

Булевый (логический) тип (boolean)

Используется для хранения значений да/нет: true значит «да/правильно», а false значит «нет/не правильно». Можно задать такой тип как значение переменной, либо как результат сравнения.

let nameFieldChecked = true/false;

let isGreater = 4 > 1;

Значение "null"

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

let age = null;

Значение "undefined"

Означает, что значение не было присвоено. Так, если переменная будет объявлена, но значение не задано будет выведено «undefined».

Объект и символы (object & symbol)

Объект - сложный тип данных. В отличие от примитивных (строки, числа и др.), он хранит в себе коллекции данных или сложные структуры.

Символ - тип, применяемый для уникальный идентификаторов в объектах.

Оператор typeof

Применяется для возвращения типа аргумента. Полезно, когда требуется различная обработка типов или в случае проверки.

Имеет 2 формы:

  1. Синтаксис оператора typeof x.
  2. Синтаксис функции: typeof(x).

Ошибки typeof

  • typeof null // "object" - "null'' не является объектом, это специальное значение с отдельным типом;
  • typeof alert // "function" - в JS нет функций; они относятся к объектному типу, но обрабатываются и относятся они как "function".