Вот третья запись в блоге, посвященная моему более подробному изучению JavaScript. Давайте рассмотрим то, что мы узнали до сих пор:
- JS — это основанный на ООП (данные организованы в объекты), динамически типизированный язык, в котором переменные могут быть изменены во время выполнения, содержащий такие функции, как построение объекта во время выполнения (изменение объектов во время выполнения), списки переменных параметров (множество аргументов/параметров, разрешенных для функции) и Самоанализ объекта (посмотрите на свойства объекта).
- Управляющие структуры (if, for, while) и операторы (decleration) — это реализованные языковые элементы в JS.
- Функции внутри объектов называются методами.
- Имена, которые вы называете вашими переменными, называются идентификаторами
Итак, как вы можете видеть, там было изучено много отличной терминологии, которая идеально подходит, когда 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, чтобы объяснить мне некоторые вещи, в том числе его фрагменты тоже помогут читателям проложить свои те же самые способ мышления к моему. В следующей части я продолжу рассмотрение всех литералов, а затем мы сможем перейти к следующей странице «Поток управления и обработка ошибок». До тех пор!