Пост

JavaScript для начинающих: полное руководство по основам

JavaScript для начинающих: полное руководство по основам

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

Введение

JavaScript - это мощный язык программирования, который делает веб-страницы интерактивными. В этой статье мы рассмотрим основы JavaScript и научимся создавать динамические веб-приложения.

Что такое JavaScript?

  • Динамичность: Интерактивность на странице
  • Универсальность: Работа на клиенте и сервере
  • Простота: Легкость изучения
  • Сообщество: Большая экосистема

Основы синтаксиса

1. Переменные и типы данных

Объявление переменных

1
2
3
4
5
6
7
8
9
10
// let - для изменяемых переменных
let name = 'John';
let age = 25;
let isStudent = true;

// const - для констант
const PI = 3.14159;

// var - устаревший способ (не рекомендуется)
var oldWay = 'deprecated';

Типы данных

1
2
3
4
5
6
7
8
9
10
11
12
13
// Примитивные типы
let string = 'Hello';           // Строка
let number = 42;                // Число
let boolean = true;             // Булево значение
let nullValue = null;           // Null
let undefinedValue = undefined; // Undefined
let symbol = Symbol('id');      // Символ
let bigInt = BigInt(9007199254740991); // BigInt

// Объектные типы
let object = {};                // Объект
let array = [];                 // Массив
let function = function() {};   // Функция

2. Операторы

Математические операторы

1
2
3
4
5
6
7
8
9
let a = 10;
let b = 5;

let sum = a + b;      // Сложение: 15
let diff = a - b;     // Вычитание: 5
let product = a * b;  // Умножение: 50
let quotient = a / b; // Деление: 2
let remainder = a % b; // Остаток: 0
let power = a ** b;   // Возведение в степень: 100000

Операторы сравнения

1
2
3
4
5
6
7
8
9
let x = 5;
let y = '5';

console.log(x == y);   // true (нестрогое сравнение)
console.log(x === y);  // false (строгое сравнение)
console.log(x != y);   // false
console.log(x !== y);  // true
console.log(x > 3);    // true
console.log(x <= 5);   // true

Управление потоком

1. Условные операторы

if…else

1
2
3
4
5
6
7
8
9
10
11
12
let age = 18;

if (age >= 18) {
    console.log('Вы совершеннолетний');
} else if (age >= 14) {
    console.log('Вы подросток');
} else {
    console.log('Вы ребенок');
}

// Тернарный оператор
let status = age >= 18 ? 'Взрослый' : 'Ребенок';

switch

1
2
3
4
5
6
7
8
9
10
11
12
let day = 'Monday';

switch (day) {
    case 'Monday':
        console.log('Понедельник');
        break;
    case 'Tuesday':
        console.log('Вторник');
        break;
    default:
        console.log('Другой день');
}

2. Циклы

for

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// Обычный for
for (let i = 0; i < 5; i++) {
    console.log(i);
}

// for...of (для массивов)
const fruits = ['apple', 'banana', 'orange'];
for (const fruit of fruits) {
    console.log(fruit);
}

// for...in (для объектов)
const person = { name: 'John', age: 30 };
for (const key in person) {
    console.log(`${key}: ${person[key]}`);
}

while и do…while

1
2
3
4
5
6
7
8
9
10
11
12
13
// while
let count = 0;
while (count < 5) {
    console.log(count);
    count++;
}

// do...while
let num = 0;
do {
    console.log(num);
    num++;
} while (num < 5);

Функции

1. Объявление функций

Различные способы

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// Обычная функция
function greet(name) {
    return `Hello, ${name}!`;
}

// Функциональное выражение
const greet = function(name) {
    return `Hello, ${name}!`;
};

// Стрелочная функция
const greet = (name) => `Hello, ${name}!`;

// Метод объекта
const person = {
    name: 'John',
    greet() {
        return `Hello, ${this.name}!`;
    }
};

2. Параметры и возвращаемые значения

Работа с параметрами

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Параметры по умолчанию
function greet(name = 'Guest') {
    return `Hello, ${name}!`;
}

// Остаточные параметры
function sum(...numbers) {
    return numbers.reduce((total, num) => total + num, 0);
}

// Деструктуризация параметров
function printUser({ name, age, city }) {
    console.log(`${name} is ${age} years old and lives in ${city}`);
}

Объекты и массивы

1. Работа с объектами

Создание и модификация

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// Создание объекта
const person = {
    name: 'John',
    age: 30,
    greet() {
        return `Hello, ${this.name}!`;
    }
};

// Добавление свойств
person.city = 'New York';
person['occupation'] = 'Developer';

// Удаление свойств
delete person.age;

// Деструктуризация
const { name, age } = person;

2. Работа с массивами

Методы массивов

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
const numbers = [1, 2, 3, 4, 5];

// map
const doubled = numbers.map(num => num * 2);

// filter
const even = numbers.filter(num => num % 2 === 0);

// reduce
const sum = numbers.reduce((total, num) => total + num, 0);

// find
const firstEven = numbers.find(num => num % 2 === 0);

// includes
const hasThree = numbers.includes(3);

Асинхронное программирование

1. Promises

Работа с промисами

1
2
3
4
5
6
7
8
9
10
11
12
13
14
// Создание промиса
const fetchData = () => {
    return new Promise((resolve, reject) => {
        setTimeout(() => {
            const data = { id: 1, name: 'John' };
            resolve(data);
        }, 1000);
    });
};

// Использование промиса
fetchData()
    .then(data => console.log(data))
    .catch(error => console.error(error));

2. async/await

Асинхронные функции

1
2
3
4
5
6
7
8
9
10
11
12
async function getData() {
    try {
        const response = await fetch('https://api.example.com/data');
        const data = await response.json();
        return data;
    } catch (error) {
        console.error('Error:', error);
    }
}

// Использование
getData().then(data => console.log(data));

Современные возможности

1. Деструктуризация

Работа с объектами и массивами

1
2
3
4
5
6
7
8
// Деструктуризация объекта
const { name, age, ...rest } = person;

// Деструктуризация массива
const [first, second, ...others] = numbers;

// Значения по умолчанию
const { title = 'Untitled' } = book;

2. Шаблонные строки

Создание строк

1
2
3
4
5
6
7
8
9
10
11
12
const name = 'John';
const age = 30;

const message = `Hello, ${name}! You are ${age} years old.`;

// Многострочные строки
const html = `
    <div>
        <h1>${title}</h1>
        <p>${content}</p>
    </div>
`;

Отладка и оптимизация

1. Отладка

Инструменты отладки

1
2
3
4
5
6
7
8
9
10
11
// console методы
console.log('Debug message');
console.error('Error message');
console.warn('Warning message');
console.table([{ id: 1, name: 'John' }]);

// debugger
function complexFunction() {
    debugger; // Точка остановки
    // код функции
}

2. Обработка ошибок

try…catch

1
2
3
4
5
6
7
8
9
10
try {
    // Код, который может вызвать ошибку
    const result = someFunction();
} catch (error) {
    // Обработка ошибки
    console.error('Error:', error.message);
} finally {
    // Код, который выполнится в любом случае
    cleanup();
}

Заключение

JavaScript - это мощный и гибкий язык программирования. Понимание основ JavaScript и современных возможностей поможет создавать интерактивные и динамические веб-приложения.

Авторский пост защищен лицензией CC BY 4.0 .

© Oleg Dobrynin. Некоторые права защищены.