В JavaScript существует шесть основных типов данных, которые можно разделить на две группы: примитивные и ссылочные типы данных. Вот обзор этих типов данных:
- Примитивные типы данных. Это основные типы данных, которые непосредственно содержат значение. Они неизменяемы, то есть их значения не могут быть изменены после их создания.
а. Строка: строка представляет собой текст и заключена в одинарные или двойные кавычки. Например, «Привет, мир!» или «Привет, мир!».
б. Число: числовой тип данных представляет как целые числа, так и числа с плавающей запятой. Например, 42, 3,14, -10 или 1,5e8.
в. Логическое значение: логическое значение представляет истинные или ложные значения. Обычно они используются в условных операторах и сравнениях.
д. Null: тип данных null представляет собой преднамеренное отсутствие какого-либо значения. Он используется, чтобы указать, что переменная не должна иметь значения.
е. Undefined: переменная, которая была объявлена, но ей не присвоено значение, имеет тип undefined.
2. Справочные типы данных. Это более сложные типы данных, в которых хранятся наборы значений или более сложные сущности.
а. Объект: объект представляет собой набор пар ключ-значение, где ключи являются строками, а значения могут быть любого типа данных, включая другие объекты. Функции также являются типом объекта в JavaScript. Существует несколько встроенных объектов, таких как Array, Date и RegExp, а также настраиваемые объекты, созданные разработчиком.
В дополнение к этому, JavaScript также представил новый примитивный тип данных под названием «Символ» в ECMAScript 2015 (ES6). Символы — это уникальные и неизменяемые идентификаторы, которые в основном используются в качестве ключей свойств объекта.
Помните, что JavaScript — это язык с динамической типизацией, а это означает, что вам не нужно указывать тип данных переменной при ее объявлении. Интерпретатор определяет тип данных на основе значения, присвоенного переменной.
В JavaScript переменные могут быть объявлены с использованием var, let и const. Каждое из этих ключевых слов имеет свои собственные правила области видимости и варианты использования.
var: Это традиционный способ объявления переменных в JavaScript. Переменные, объявленные с помощьюvar, имеют область действия функции или глобально. Если переменная объявлена сvarвне какой-либо функции, она становится глобальной переменной и доступна во всем коде. Если он объявлен внутри функции, он имеет локальную область видимости и доступен только внутри этой функции.
Одной из важных особенностей var является подъем, что означает, что объявления переменных перемещаются в верхнюю часть своей области (глобальной или функциональной области) во время выполнения. Однако поднимаются только объявления, а не назначения.
2. let: представленный в ECMAScript 2015 (ES6), let предоставляет переменные с областью действия блока. Переменные, объявленные с помощью let, доступны только внутри блока, в котором они определены, а также во всех вложенных блоках. Это помогает предотвратить случайную перезапись или доступ к переменным из-за пределов их предполагаемой области.
В отличие от var, переменные let не поднимаются наверх блока. Они инициализируются, когда выполнение кода достигает строки, где они объявлены.
3. const: также представленный в ES6, const используется для объявления констант, которые имеют блочную область видимости, как let переменные. Ключевое отличие состоит в том, что переменной const должно быть присвоено значение во время объявления, и это значение нельзя изменить впоследствии.
Как и let, переменные const не поднимаются в начало блока, а инициализируются, когда выполнение кода достигает строки, где они объявлены.
Вот краткое изложение различий:
var: Функциональная или глобальная область действия, поднятая, может быть переназначена.let: с блочной областью действия, без подъема, можно переназначить.const: С блочной областью действия, без поднятия, нельзя переназначить.
Рекомендуется использовать let и const в современном коде JavaScript для лучшего контроля над областью видимости переменных и во избежание потенциальных проблем, вызванных поднятием и непреднамеренными переназначениями.
Функции — неотъемлемая часть JavaScript, позволяющая определять повторно используемые фрагменты кода. Их можно создавать и использовать несколькими способами, включая объявления функций, функциональные выражения, стрелочные функции и немедленно вызываемые функциональные выражения (IIFE).
- Объявление функции. Объявление функции, также известное как оператор функции, является наиболее распространенным способом создания функции. Он начинается с ключевого слова
function, за которым следует имя функции, список параметров и тело функции, заключенное в фигурные скобки.
Пример:
function greet(name) {
console.log('Hello, ' + name + '!');
}
Объявления функций поднимаются, что означает, что вы можете вызывать функцию до ее объявления в коде.
2. Выражение функции: выражение функции создается, когда вы назначаете анонимную функцию переменной. Сама функция не имеет имени, но вы можете вызвать ее, используя переменную, которой она присвоена.
Пример:
const greet = function(name) {
console.log('Hello, ' + name + '!');
};
Функциональные выражения не поднимаются, поэтому вы должны определить функцию перед ее вызовом.
3. Стрелочные функции. Представленные в ES6 стрелочные функции представляют собой более короткий способ записи функциональных выражений. Они используют синтаксис «толстой стрелки» (=>) и могут иметь более лаконичный синтаксис для простых функций. Стрелочные функции не имеют собственного значения this, поэтому они наследуют значение this из окружающей их области.
Пример
const greet = (name) => {
console.log('Hello, ' + name + '!');
};
Для функций с одним параметром можно опустить круглые скобки вокруг параметра, а для функций с одной строкой можно опустить фигурные скобки и ключевое слово return:
const square = x => x * x;
4. Немедленно вызываемые функциональные выражения (IIFE): IIFE — это функциональное выражение, которое определяется и выполняется сразу после его создания. Обычно он используется для создания частной области и предотвращения загрязнения глобального пространства имен.
Пример:
(function() {
console.log('This is an IIFE!');
})();
Вы также можете использовать стрелочные функции для IIFE:
(() => {
console.log('This is an IIFE using an arrow function!');
})();
Понимание этих различных способов создания и использования функций в JavaScript позволит вам писать более универсальный и удобный для сопровождения код.
Управляющие структуры в JavaScript используются для управления потоком выполнения программы на основе определенных условий или итераций. Наиболее распространенными управляющими структурами являются циклы if, else, switch, for, while и do-while, а также операторы break и continue.
if: операторifиспользуется для условного выполнения блока кода, если определенное условие истинно.
Пример:
if (condition) {
// code to execute if the condition is true
}
2. else: оператор else используется в сочетании с оператором if для выполнения блока кода, если условие в операторе if ложно.
Пример:
if (condition) {
// code to execute if the condition is true
} else {
// code to execute if the condition is false
}
3. else if: оператор else if позволяет проверить несколько условий в одном операторе if.
Пример:
if (condition1) {
// code to execute if condition1 is true
} else if (condition2) {
// code to execute if condition1 is false and condition2 is true
} else {
// code to execute if both conditions are false
}
4. switch: оператор switch используется для выполнения различных действий в зависимости от значения переменной или выражения. Это альтернатива использованию нескольких операторов if, когда вам нужно протестировать множество разных случаев.
Пример:
switch (expression) {
case value1:
// code to execute if expression === value1
break;
case value2:
// code to execute if expression === value2
break;
default:
// code to execute if none of the cases match
}
5. for: Цикл for используется для повторения блока кода определенное количество раз на основе инициализации, условия и оператора увеличения/уменьшения.
Пример:
for (let i = 0; i < 10; i++) {
// code to execute in each iteration
}
6. while: Цикл while используется для выполнения блока кода до тех пор, пока выполняется указанное условие.
Пример:
while (condition) {
// code to execute while the condition is true
}
7. do-while: цикл do-while аналогичен циклу while, но гарантирует выполнение блока кода хотя бы один раз, поскольку условие проверяется после первой итерации.
Пример:
do {
// code to execute at least once
} while (condition);
8. break: оператор break используется для преждевременного выхода из цикла или оператора switch, обычно при выполнении определенного условия.
Пример:
for (let i = 0; i < 10; i++) {
if (i === 5) {
break; // exits the loop when i === 5
}
}
9. continue: оператор continue используется для пропуска оставшейся части текущей итерации цикла и перехода к следующей итерации, как правило, при выполнении определенного условия.
Пример:
for (let i = 0; i < 10; i++) {
if (i % 2 === 0) {
continue; // skips even numbers and continues with the next iteration
}
console.log(i); // only odd
Объекты и массивы — это важные структуры данных в JavaScript, которые позволяют хранить и организовывать сложные данные. Вот обзор литералов объектов, прототипов, методов массивов и манипулирования объектами и массивами:
- Литералы объекта. Литерал объекта — это простой способ создания объекта с использованием списка пар ключ-значение, разделенных запятыми, заключенных в фигурные скобки. Ключи — это строки (или символы), а значения могут быть любого типа данных, включая другие объекты и функции (методы).
Пример:
const person = {
name: 'John',
age: 30,
greet: function() {
console.log('Hello, ' + this.name + '!');
}
};
2. Прототипы. Каждый объект в JavaScript имеет внутреннее свойство [[Prototype]] (или __proto__), которое указывает на его объект-прототип. Объект-прототип используется для наследования, что означает, что объекты могут совместно использовать свойства и методы через свои прототипы. По умолчанию все объекты наследуют от Object.prototype.
Чтобы добавить свойства или методы к прототипу объекта, вы можете использовать свойство prototype функции-конструктора:
function Person(name, age) {
this.name = name;
this.age = age;
}
Person.prototype.greet = function() {
console.log('Hello, ' + this.name + '!');
};
const person1 = new Person('John', 30);
person1.greet(); // 'Hello, John!'
3. Методы массива. Массивы — это объекты со специальными методами и свойствами для работы с упорядоченными наборами данных. Некоторые распространенные методы массива включают в себя:
push(): добавить элемент в конец массиваpop(): Удалить последний элемент из массиваshift(): Удалить первый элемент из массиваunshift(): добавить элемент в начало массиваslice(): вернуть неглубокую копию части массиваsplice(): Добавить или удалить элементы из массиваmap(): Создайте новый массив с результатами вызова предоставленной функции для каждого элементаfilter(): Создать новый массив со всеми элементами, прошедшими проверку, реализованную предоставленной функцией.reduce(): применить функцию к аккумулятору и каждому элементу массива, чтобы уменьшить его до одного значения.forEach(): выполнить предоставленную функцию один раз для каждого элемента массива
4. Манипулирование объектами и массивами. Вы можете манипулировать объектами и массивами различными способами, например добавлять, изменять или удалять свойства и элементы.
- Добавление свойств к объекту:
object.newProperty = value; - Изменение свойств объекта:
object.property = newValue; - Удаление свойств объекта:
delete object.property; - Добавление элементов в массив:
array.push(value);илиarray.unshift(value); - Удаление элементов из массива:
array.pop();илиarray.shift(); - Изменение элементов в массиве:
array[index] = newValue; - Удаление элементов из массива:
array.splice(index, 1);илиdelete array[index];(обратите внимание, чтоdeleteоставляет пустое место в массиве)
Понимание объектов и массивов, их методов и того, как ими манипулировать, необходимо для работы со сложными структурами данных и создания сложных приложений на JavaScript.