Вот третья запись в блоге, посвященная моему более подробному изучению JavaScript. Давайте рассмотрим то, что мы узнали до сих пор:

  1. JS — это основанный на ООП (данные организованы в объекты), динамически типизированный язык, в котором переменные могут быть изменены во время выполнения, содержащий такие функции, как построение объекта во время выполнения (изменение объектов во время выполнения), списки переменных параметров (множество аргументов/параметров, разрешенных для функции) и Самоанализ объекта (посмотрите на свойства объекта).
  2. Управляющие структуры (if, for, while) и операторы (decleration) — это реализованные языковые элементы в JS.
  3. Функции внутри объектов называются методами.
  4. Имена, которые вы называете вашими переменными, называются идентификаторами

Итак, как вы можете видеть, там было изучено много отличной терминологии, которая идеально подходит, когда ChatGPT подсказывает вам о фрагменте кода. Понимание того, что вам говорят, является ключом к тому, чтобы действительно иметь возможность применять документацию и помощь других, поэтому я не упустил это из виду и просто решил сразу перейти к кодированию. Мы остановились на подзаголовке Структуры и типы данных, поэтому теперь мы перейдем к этой части документации, и я расскажу вам о своем понимании этого.

Структуры и типы данных

В этой части рассматриваются некоторые знакомые типы данных, такие как Boolean, String и BigInt, Object, однако есть и другие, о которых идет речь. Следует отметить, что эти типы данных являются примитивами (то есть данными, которые не являются объектами и не имеют методов или свойств). Вот они:

  • null: специальное ключевое слово, обозначающее нулевое значение. В отличие от Null или NULL, JS чувствителен к регистру.
  • undefined: свойство верхнего уровня (принадлежит глобальному объекту (в веб-браузерах это окно), не вложенное в какой-либо другой объект), значение которого не определено.
  • Число: это не только целое число, но и число с плавающей запятой.
  • Symbol: тип данных, экземпляры которого уникальны и неизменны (в значительной степени, Symbol() делает значение полностью уникальным, даже если значение, которое вы сделали уникальным, было строкой, и эта строка была такой же, как и другая строка переменных). Вот пример:
let symbol1 = Symbol('mySymbol');
let symbol2 = Symbol('mySymbol');

console.log(symbol1 === symbol2); // logs "false"

Да, мне это нравится. Я собираюсь включить фрагменты кода, чтобы вы могли лучше понять концепции.

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

let car = {
  brand: "Toyota",
  model: "Corolla",
  year: 2020,
  startEngine: function() {
    console.log("Engine started");
  }
};

А затем позвольте мне показать вам функцию:

function add(a, b) {
  return a + b;
}

let result = add(5, 3);
console.log(result);  // Outputs: 8

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

Что интересно отметить об операторе +, это то, что в выражениях, включающих числовые и строковые значения с ним, JS преобразует числовые значения в строки. Посмотрите на этот пример:

x = "The answer is " + 42; // "The answer is 42"
y = 42 + " is the answer"; // "42 is the answer"
z = "37" + 7; // "377"

Но с другими операторами, такими как «-» и «*», он не преобразует числовое значение в строку:

"37" - 7; // 30
"37" * 7; // 259

Интересно отметить.

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

В случае, если значение, представляющее число, находится в памяти в виде строки, существуют методы преобразования parseInt() и parseFloat(). Вот пример его использования:

let str = "123";
let num = parseInt(str);
console.log(num); // 123

Вы также можете указать систему счисления (базовая, поэтому для двоичного кода это 2, потому что она основана на 0 и 1) для синтаксического анализа, например, parseInt(str, 2); (предоставленная str на этот раз выглядела как «1010» или что-то в этом роде).

Еще следует отметить, что альтернативный метод извлечения числа из строки — с оператором +:

"1.1" + "1.1" // '1.11.1'
(+"1.1") + (+"1.1"); // 2.2
// Note: the parentheses are added for clarity, not required.

Литералы!

Литералы представляют значения в JavaScript. Это фиксированные значения, а не переменные, которые вы буквально предоставляете в своем сценарии. Здесь, в этом разделе, я опишу следующие типы литералов:

Литералы массива

Литерал массива — это список из нуля или более выражений (выражениями могут быть литералы, переменные, арифметические операции), каждое из которых представляет собой элемент массива (как и элементы массива), заключенный в квадратные скобки. Массивы создаются с использованием литерала массива. Мы все знаем массивы из других языков, которым нас учили, но я не знал, что если поставить две запятые подряд в литерале массива, в массиве останется пустая ячейка для неопределенного элемента:

const fish = ["Lion", , "Angel"];

Когда вы регистрируете этот массив, вы видите:

console.log(fish);
// [ 'Lion', <1 empty item>, 'Angel' ]

Второй элемент пуст и не является точно неопределенным значением. Следует отметить, что при использовании метода обхода «Array.prototype.map» пустые слоты пропускаются (помните, что прототип = наследование).

В следующем примере длина массива равна трем:

const myList = ["home", , "school"];

В следующем примере длина массива равна четырем, а myList[0] и myList[2] отсутствуют:

const myList = [, "home", , "school"];

Теперь обратите внимание, в следующем примере длина массива равна четырем, а myList[1] и myList[3] отсутствуют. Игнорируется только последняя запятая:

const myList = ["home", , "school", ,];

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

const myList = ["home", /* empty */, "school", /* empty */, ];

Конец

Я думаю, что мы прошли довольно много в этом документе! Я думаю, что включение этих фрагментов кода определенно поможет любому, кто просматривает эти страницы и понимает, откуда я пришел, когда я излагаю свои мысли, поскольку я использую GPT, чтобы объяснить мне некоторые вещи, в том числе его фрагменты тоже помогут читателям проложить свои те же самые способ мышления к моему. В следующей части я продолжу рассмотрение всех литералов, а затем мы сможем перейти к следующей странице «Поток управления и обработка ошибок». До тех пор!