Переменные в JavaScript
Переменные — это контейнеры для хранения данных. В JavaScript есть три способа объявления: var, let и const. Современный стандарт рекомендует использовать const для неизменяемых значений и let для изменяемых. var устарел и может вызывать проблемы из-за hoisting (поднятия переменных).
Пример объявления:
let message = "Привет";
const pi = 3.14;
var oldVariable = "Устарело";
Область видимости определяет, где переменная доступна. let и const имеют блочную область видимости — они видны только внутри блока {}. var имеет функциональную область видимости — видна throughout всей функции.
Частые ошибки с переменными
Новички часто сталкиваются с проблемами:
- Использование переменной без объявления (приводит к глобальной переменной или ошибке в strict mode)
- Попытка изменить const (вызывает TypeError)
- Путаница с областью видимости var
| Тип | Область видимости | Переопределение | Поднятие (hoisting) |
|---|---|---|---|
| Функциональная | Да | Да (с undefined) | |
| Блочная | Да | Да (но недоступна до объявления) | |
| Блочная | Нет | Да (но недоступна до объявления) |
Типы данных
JavaScript — язык с динамической типизацией. Тип определяется в момент присваивания значения и может меняться. Основные примитивные типы: number, string, boolean, null, undefined, symbol, bigint.
Оператор typeof помогает определить тип переменной:
typeof "Текст" // "string"
typeof 42 // "number"
typeof true // "boolean"
Особенности типов данных:
- NaN (Not a Number) имеет тип «number»
- null возвращает «object» (историческая особенность)
- Разница между null (намеренное отсутствие значения) и undefined (значение не присвоено)
Преобразование типов
JavaScript автоматически преобразует типы в выражениях. Это может приводить к неожиданным результатам:
"5" + 2 // "52" (конкатенация)
"5" - 2 // 3 (преобразование в число)
Явное преобразование безопаснее:
Number("5") + 2 // 7
String(5) + 2 // "52"
Функции
Функции — это блоки кода, которые выполняются при вызове. Можно объявлять несколькими способами: Function Declaration, Function Expression, стрелочные функции.
function sum(a, b) { return a + b;
}
Стрелочные функции (современный стандарт):
const sum = (a, b) => a + b;
Функции имеют доступ к внешним переменным (замыкания) и могут возвращать значения. Если return нет, функция возвращает undefined.
Параметры и аргументы
Параметры — это переменные в объявлении функции, аргументы — фактические значения при вызове. JavaScript не проверяет количество аргументов — лишние игнорируются, недостающие становятся undefined.
Значения параметров по умолчанию:
function greet(name = "Гость") { return `Привет, ${name}!`;
}
Практические рекомендации
Чек-лист для начинающих:
- Всегда используйте ‘use strict’ в начале файла
- Предпочитайте const и let вместо var
- Давайте переменным и функциям понятные имена
- Проверяйте типы при работе с пользовательским вводом
- Тестируйте функции с разными аргументами
Известный разработчик Брендан Эйх, создатель JavaScript, говорил: «JavaScript всегда был про гибкость и доступность». Это отражается в простоте базовых конструкций, но требует внимательности к деталям.
Частые вопросы
Чем отличаются let, const и var в JavaScript?
let и const появились в ES6 и имеют блочную область видимости. const нельзя переопределить, let — можно. var имеет функциональную область видимости и поднимается (hoisting), что может вызывать неожиданное поведение.
Какие основные типы данных в JavaScript?
Основные примитивные типы: number, string, boolean, null, undefined, symbol, bigint. Также есть объекты (object) — массивы, функции, даты и другие составные типы.
Что такое строгий режим в JavaScript?
Строгий режим (use strict) включает более строгую проверку синтаксиса, предотвращает некоторые ошибки, запрещает неявное объявление глобальных переменных. Рекомендуется использовать всегда.