Javascript Base Flashcards
Характеристика языка Javascript
JavaScript - это динамически типизированный (одна переменная может принимать разные типы), встраиваемый язык, т.е. ему для работы нужно некоторое окружение (например, браузер(сайты) или платформа node.js(мобильные и десктопные приложения - вне браузера))
Как запустить Javascript-код
С помощью node.js:
node main.js
С помощью браузера:
добавить скрипт на страницу html
Почему JavaScript-код лучше выносить в отдельный файл?
- чтобы браузер мог закэшировать его и не запрашивать повторно
- принцип разделения ответственности
Типы данных Javascript
Примитивные:
- string
- number
- boolean
- symbol
- null
- undefined
- bigint (специальный
числовой тип, который
предоставляет
возможность работать с
целыми числами
произвольной длины)
Составные:
- Объекты
- массивы
Ввод данных в Javascript
Браузер:
let username = prompt(“Как вас зовут?”);
node.js:
const readline = require(‘readline’).createInterface({
input: process.stdin,
output: process.stdout
});
readline.question(‘Как вас зовут?’, name => {
console.log(name);
readline.close();
});
Область видимости переменной
Если переменная объявлена внутри блока кода {…}, то она видна только внутри этого блока
Лексическое окружение
В JavaScript у каждой выполняемой функции, блока кода{…}и скрипта есть связанный с ними внутренний (скрытый) объект, называемыйлексическим окружением LexicalEnvironment, состоящим из:
- Environment Record (объект, в котором в виде свойств хранятся все локальные переменные блоков)
- Ссылка на внешнее лексическое окружение (то, что вне блока)
Когда код хочет получить доступ к переменной – сначала происходит поиск во внутреннем лексическом окружении, затем во внешнем, затем в следующем и так далее, до глобального
Strict mode в JavaScript
— это специальный режим, который делает код более безопасным и помогает избежать распространённых ошибок:
- Запрещает использование устаревшего синтаксиса
- Превращает «тихие» ошибки в исключения
- запрещает использование глобальных переменных без объявления
Замыкание
Замыкание – это функция, которая запоминает свои внешние переменные и может получить к ним доступ.
- В Javascript все функции изначально являются замыканиями (функции «видят» и могут использовать переменные, которые были доступны во время её создания)
Массив в Javascript
Массив в JS - ссылочный составной тип данных, элементы которого могут быть разных типов:
const mixedArray = [1, “блаженство”, true, { key: “value” }, null];
Методы массива
- shift (Удаляет первый элемент из массива и возвращает его)
- unshift (Добавляет один или несколько элементов в начало массива)
- push (Добавляет один или несколько элементов в конец массива)
- pop (удаляет последний элемент из массива и возвращает его)
- slice (возвращает новый массив, содержащий выбранные элементы из исходного массива)
- concat (объединение двух или более массивов в один новый массив)
- split (для разделения строки на подстроки по символу и создания массива на основе этих подстрок)
- join (для объединения элементов массива в строку с помощью заданного разделителя)
- map (для создания нового массива путем применения функции к каждому элементу исходного массива)
- filter (создает новый массив, содержащий элементы, которые удовлетворяют условию)
- includes (для проверки наличия элемента в массиве)
Объект в Javascript
Объект - ссылочный составной тип данных, который позволяет объединить несколько значений и функций в одну сущность (Изменения в копии объекта повлияют на оригинальное значение объекта):
const person = {
name: “Вася”,
age: 97,
isStudent: true,
};
Объекты могут быть вложенными
Перебираемые объекты
это обобщение массивов, что позволяет использовать любой объект в циклеfor..of.
Чтобы сделать объект итерируемым, нужно добавить в него метод Symbol.iterator(), который должен вернуть итератор (объект с методом next(), который должен возвращать {done: Boolean, value: any}
Мутация объектов
- Добавление свойства:
const person = {};
person.occupation = “programmer” - Удаление свойства:
let person = {name: ‘Татьяна’};
delete person.name;
Методы объекта
это функции, которые связаны с определенным объектом:
let car = {
brand: “Toyota”,
model: “Camry”,
start: function() {
console.log(“Автомобиль заведен”);
},
//сокращенный синтаксис
stop() {
console.log(“Автомобиль заглушен”);
}
};
Ключевое слово «this»
Ключевое слово «this» - позволяет обращаться к свойствам и методам объекта, даже если имя объекта меняется или неизвестно заранее
Глобальный объект
Глобальный объект - предоставляет переменные и функции, доступные в любом месте программы:
- для браузера: window
- для node.js: global
setTimeout, setInterval
setTimeout - позволяет вызвать функцию один раз через определённый интервал времени:
- возвращает id таймера
- отмена выполнения: clearTimeout(timerId)
setInterval - позволяет вызывать функцию регулярно повторяя через определённый интервал времени
Стрелочная функция
Похожа на лямбда-выражение:
let greet = () => console.log(“Все понятно”);
- нет this
- нельзя использовать с оператором new
- не имеют переменной arguments
Функция в JavaScript
Функция - этофрагмент кода, к которому можно обратиться в любом месте программы.
Функция может быть динамически создана, скопирована в другую переменную или передана как аргумент другой функции и позже вызвана из совершенно другого места.
Все аргументы функции (не стрелочной) хранятся в псевдомассиве arguments
function greetUser() {
console.log(“Привет, пользователь”);
}
// Вызов функции
greetUser();
Вызывать функцию можно с любым количеством аргументов независимо от того, как она была определена
Функциональные выражения Function Expression
let greet = function(name) {
console.log(“Привет, “ + name + “!”);
};
Остаточные параметры функций
Вызывать функцию можно с любым количеством аргументов независимо от того, как она была определена, но чтобы их задействовать, нужно использовать остаточные параметры:
function sumAll(…args) { // args — имя массива
let sum = 0;
for (let arg of args) sum += arg;
return sum;
}
Оператор расширения
Оператор расширения “…” при передаче аргументов в фунцию, применяется для:
- преобразования массива в набор отдельных значений
- для слияния массивов
- чтобы превратить строку в массив символов
// return 5 (оператор “раскрывает” массив в список аргументов)
alert( Math.max(…arr) );
Объект функции
Функция в Javascript - это объект со свойствами:
- name (название функции или переменной, которой присваивается функция, создаваемая без имени)
- length (количество параметров, кроме …params)
- пользовательские свойства