Лекции 2025. Java. Белая / Ответы на билеты. Java
.pdf
РФУТ - Э
ТЕМЫ ДЛЯ ПОДГОТОВКИ К ЭКЗАМЕНУ
1. Общие сведения о JavaScript. Способы добавление сценариев JavaScript на веб-страницу.
Общие сведения:
JavaScript (JS) — это высокоуровневый, интерпретируемый язык программирования.
Часто используется для создания интерактивных веб-страниц (клиентская сторона), но также может выполняться на сервере (Node.js) и в других окружениях.
Является мультипарадигменным: поддерживает объектно-ориентированный (прототипный), императивный и функциональный стили программирования.
Динамически типизированный: типы переменных определяются во время выполнения, а не во время компиляции.
Однопоточный (в браузере, с моделью событий для асинхронности).
Способы добавления сценариев JavaScript на веб-страницу:
1.Встроенный (Inline) в HTML теги (не рекомендуется для больших скриптов):
2.Внутри тега
в
или
:
Скрипты в
выполняются до того, как DOM полностью загружен (если нет
или
).
Скрипты в конце
выполняются после загрузки DOM, что часто предпочтительнее, так как скрипт может сразу взаимодействовать с элементами страницы.
3.Подключение внешнего файла с помощью тега 
(рекомендуемый способ):
HTML (index.html):
JavaScript (myscript.js):
Атрибуты
и
:
: Скрипт загружается асинхронно и выполняется, как только загрузится. Порядок выполнения скриптов с
не гарантируется. Не блокирует парсинг HTML во время загрузки.
: Скрипт загружается асинхронно, но выполняется после того, как весь HTML документ будет разобран, и в том порядке, в котором они указаны в HTML. Не блокирует парсинг HTML во время загрузки.
2. Синтаксис JavaScript. Символы-разделители и переводы строк. Комментарии. Литералы. Идентификаторы.
Символы-разделители:
Точка с запятой (
) используется для разделения инструкций (операторов). Она не всегда обязательна, так как JavaScript имеет механизм автоматической вставки точки с запятой (ASI - Automatic Semicolon Insertion). Однако, чтобы избежать неоднозначностей, рекомендуется всегда ставить точку с запятой.
Запятая (
) используется для разделения элементов в списках (например, параметров функций, элементов массива, свойств объекта).
Переводы строк:
Переводы строк могут выступать в роли разделителей инструкций, если ASI сможет корректно их интерпретировать.
Нельзя разрывать строку литерала (в кавычках) переводом строки без использования символа обратного слеша (
) или шаблонных строк.
Комментарии:
Однострочные: начинаются с
и продолжаются до конца строки.
Многострочные: начинаются с
и заканчиваются
.
Литералы:
Фиксированные значения, которые представлены непосредственно в коде. Числовые:
,
,
Строковые:
,
, `Шаблонная строка` Булевы:
, 
Объектные: 
Массивные: 
: специальное значение, представляющее "ничего" или "пусто".
: специальное значение, означающее, что переменная объявлена, но ей не присвоено значение.
Регулярные выражения: 
Идентификаторы:
Имена, используемые для переменных, функций, меток и т.д. |
|
||
Правила именования: |
|
|
|
Могут содержать буквы (Unicode), цифры, символы и . |
|
||
Не могут начинаться с цифры. |
|
|
|
Регистрозависимы ( |
и |
- разные идентификаторы). |
|
Не должны совпадать с зарезервированными словами ( , |
, |
||
и т.д.). |
|
|
|
3. Переменные JavaScript и их область действия. Операторы языка
JavaScript.
Переменные JavaScript:
Используются для хранения данных.
Объявляются с помощью ключевых слов
,
,
.
: Старый способ объявления. Имеет функциональную или глобальную область видимости. Подвержен "всплытию" (hoisting) объявления.
: Современный способ. Имеет блочную область видимости (ограничена ближайшими фигурными скобками
). Не подвержена всплытию значения (но объявление "всплывает" в "временную мертвую зону").
: Для объявления констант. Значение должно быть присвоено при объявлении и не может быть изменено (для примитивов). Для объектов и массивов нельзя изменить ссылку на сам объект/массив, но можно изменять их содержимое. Имеет блочную область видимости.
Область действия (Scope):
Определяет, где в коде переменная доступна.
Глобальная область видимости: Переменные, объявленные вне любых функций или блоков (с
или без объявления в нестрогом режиме), доступны из любого места кода.
Функциональная область видимости: Переменные, объявленные с
внутри функции, доступны только внутри этой функции.
Блочная область видимости: Переменные, объявленные с
или
внутри блока (например, в
,
, или просто
), доступны только внутри этого блока.
Операторы языка JavaScript: (будут подробнее рассмотрены в следующих вопросах)
Арифметические:
,
,
,
,
(остаток от деления),
(возведение в степень),
(инкремент),
(декремент).
Присваивания:
,
,
,
,
,
,
.
Сравнения:
(нестрогое равенство),
(строгое равенство),
,
,
,
,
,
.
Логические:
(логическое И),
(логическое ИЛИ),
(логическое НЕ). Побитовые:
,
,
,
,
,
,
.
Тернарный оператор:
. Типовые:
,
.
Другие:
,
,
,
, оператор запятая
, оператор расширения
, оператор опциональной цепочки
, оператор нулевого слияния
.
4. Типы данных в JavaScript.
JavaScript — язык с динамической типизацией. Переменные не привязаны к типу, тип имеет значение. Существует 8 типов данных:
1. Примитивные типы:
: для чисел любого вида: целочисленных или с плавающей точкой.
Например: |
, |
, |
(Not-a-Number), |
. |
|
|
: для строк. Строки заключаются в одинарные, двойные или обратные |
||||||
кавычки. Например: |
|
, |
, `age: ${30}`. |
|
|
|
: логический тип, может принимать значения |
или |
. |
||||
: специальное значение, представляющее "ничего", "пусто" или "значение |
||||||
неизвестно". Образует отдельный тип. |
|
|
||||
|
: специальное значение, означающее "значение не присвоено". |
|||||
Образует отдельный тип. Переменная, которая была объявлена, но не |
||||||
инициализирована, имеет значение |
. |
|
|
|||
: для создания уникальных идентификаторов. Используется реже, в |
||||||
основном для "скрытых" свойств объектов. |
|
|
||||
: для целых чисел произвольной длины. Добавляется |
в конце числа: |
|||||
|
|
|
|
. |
|
|
2. Составной тип (непримитивный):
: для более сложных структур данных. Включает в себя массивы, функции, обычные объекты, даты и т.д.
5. Арифметические операторы JavaScript.
(Сложение):
. Также используется для конкатенации строк: 
.
(Вычитание):
.
(Умножение):
.
(Деление):
.
(Остаток от деления):
.
(Возведение в степень, ES2016+):
(эквивалентно 
).
(Инкремент): Увеличивает значение на 1.
Префиксный
: Сначала увеличивает
, затем возвращает новое значение.
Постфиксный
: Сначала возвращает текущее значение
, затем увеличивает
.
(Декремент): Уменьшает значение на 1.
Префиксный
: Сначала уменьшает
, затем возвращает новое значение.
Постфиксный
: Сначала возвращает текущее значение
, затем уменьшает
.
let a = 10; let b = 3;
console.log("Сложение:", a + b); // 13 console.log("Вычитание:", a - b); // 7 console.log("Умножение:", a * b); // 30 console.log("Деление:", a / b); // 3.333...
console.log("Остаток:", a % b); // 1 console.log("Возведение в степень:", a ** b); // 1000
let c = 5; let d = 5;
console.log("Префиксный инкремент:", ++c); // 6 (сначала c=6, потом вывод) console.log("Значение c после:", c); // 6
console.log("Постфиксный инкремент:", d++); // 5 (сначала вывод d=5, потом d=6) console.log("Значение d после:", d); // 6
// Особые случаи с числами: console.log(Infinity / Infinity); // NaN console.log(1 / 0); // Infinity console.log(-1 / 0); // -Infinity
console.log("5" + 2); // "52" (конкатенация строк) console.log("5" - 2); // 3 (строка "5" преобразуется в число) console.log("5" 2); // 10 (строка "5" преобразуется в число) console.log("hello" 2); // NaN
6. Логические операторы JavaScript.
Используются для комбинирования или инвертирования булевых значений.
(Логическое ИЛИ):
Возвращает первое истинное (
) значение или последнее значение, если все ложные (
).
значения:
,
,
(пустая строка),
,
,
.
Часто используется для присвоения значений по умолчанию.
(Логическое И):
Возвращает первое ложное (
) значение или последнее значение, если все истинные (
).
Часто используется для проверки нескольких условий или для условного выполнения кода (короткая схема вычисления).
(Логическое НЕ):
Преобразует операнд в булево значение, а затем инвертирует его.
это
,
это
.
Двойное НЕ (
) используется для явного преобразования значения в булев тип.
console.log(true || false); // true console.log(false || true); // true console.log(true || true); // true console.log(false || false); // false
console.log(1 || 0); // 1 (1 - truthy) console.log(null || "Привет"); // "Привет"
console.log(undefined || 0 || "" || "OK" || null); // "OK" console.log(null || undefined || 0); // 0 (последнее falsy)
console.log(true && false); // false console.log(false && true); // false console.log(true && true); // true console.log(false && false); // false
console.log(1 && 0); // 0 (0 - falsy) console.log("Привет" && null); // null
console.log("OK" && 1 && "текст"); // "текст" (последнее truthy) console.log("Привет" && 0 && "Еще текст"); // 0 (первое falsy)
let userLoggedIn = true;
userLoggedIn && console.log("Пользователь вошел!"); // Выведет, если userLoggedIn = true
console.log(!true); // false console.log(!false); // true console.log(!0); // true (0 - falsy) console.log(!""); // true ("" - falsy)
console.log(!"Привет"); // false ("Привет" - truthy)
console.log(!!null); // false console.log(!!"текст"); // true
