Переменные в JavaScript
Любой язык программирования манипулирует с памятью. С помощью операторов мы обращаемся к памяти, запрашиваем, обрабатываем и сохраняем данные обратно в память. Однако программист не может обращаться к памяти напрямую, так как JavaScript является языком высокого уровня. Для того, чтобы можно было работать с памятью существуют переменные (variables). Они делятся на примитивные и структурные.
Примитивная переменная может хранить одно значение любого типа данных языка. Структурная переменная может хранить множество данных разных типов и значений. Переменная является сама по себе ссылкой на область памяти, где хранятся данные. По этой ссылке программист извлекает данные, пишет алгоритм обработки данных и при надобности снова сохраняет результат обработки в ту же или другую область памяти.
Синтаксис создания переменной
Если просто, то переменные нужны для хранения данных. Если данные не сохранять в переменные, то мы их просто потеряем во время выполнения программы. Представим ситуацию: человек пришел в банк открывать счет. Если его данные не записать в дело, то они забудутся и в следующий раз, когда человек придет в банк для выполнения операции, его не смогут идентифицировать. Если его данные зафиксируют, то человек станет официальным клиентом банка.
Итак, синтаксис создания переменной следующий: var variable;. Здесь ключевое слово var является оператором объявления переменной, variable является именем переменной (ссылки на память) и может быть произвольным но должно соответствовать некоторым правилам.
Пример:
var x; // создание переменной без присвоения начального значения, но по умолчанию оно равно undefined
var y = 5; // создание переменной с присвоением значения
y = 5+10; // 15, обработка данных и сохранение результата в переменную
x = y+3; // 15+3 = 18 — результат, который будет сохранен в переменную x
Есть три типа ключевых слов, которые ставятся перед переменной:
- var — создает переменную без конкретной области видимости, к которой можно обращаться из глобального и локального контекста;
- let — создает переменную определенного контекста, из вне к ней доступ закрыт, а также не позволяет создать переменную с таким же именем в текущем контексте;
- const — это константа, значение которой изменить нельзя, оно всегда одно, а попытка его изменения приведет к ошибке.
Пример:
var x = 5;
let c = 10;
const z = «Hello»;
z = 5; // ошибка — константу нельзя изменить
let c = 15; // ошибка, переменная c уже была создана, с таким же именем можно создать переменную в другом блоке (контексте)
var x = 34; // создали переменную без ошибки, при этом предыдущая переменная x уничтожается
{let r = 3;} // создали переменную в блоке с помощью let, она может использоваться только в этом блоке и никаком другом
{var f = 5;} // переменная, которая может быть использована в блоке и вне его
С примитивными переменными можно выполнить следующие операции:
- var x; — объявление переменной (создание именованной области памяти);
- var x = 5; — объявление с инициализацией (сохранение данных в память с объявлением ссылки на эту область памяти);
- x = 5; — сохранение в переменную нового значения (перезапись данных в память);
- x = 5 + 5; — обработка данных и сохранение результата в переменную;
- x = x + 5; — сохранение в переменную результата выражения, где идет обращение к переменной, извлечение ее текущего значения, сложение и сохранение нового значения;
- x = y; — сохранение в переменную значения из другой переменной.
Также переменные могут выступать в качестве параметров в функции.
Локальные и глобальные переменные
Глобальные переменные — это переменные, которые используются в основном контексте и они являются свойствами объекта window. Локальные переменные используются в блоке, функции, цикле или условии. К ним нет доступа из глобального контекста, но есть доступ из локального контекста блока.
Пример:
var x = 5; // создаем глобальную переменную
function hello(){
var x = 10; // создали локальную переменную в теле функции
x = x+5;
}hello(); // вызвали функцию, локальная переменная равна 15
console.log(x); // 5 — глобальная переменная осталась без изменений
Однако если в функции оперировать с переменной без var, то изменится глобальная переменная.
Пример:
var x = 5; // создаем глобальную переменную
function hello(){
x = 10; // перезаписали глобальную переменную в теле функции
x = x+5;
}hello(); // вызвали функцию, локальная переменная равна 15
console.log(x); // 15 — глобальная переменная изменена
Структурные переменные
Есть 2 типа структурных переменных в JavaScript — это массивы и объекты. Массив — это область, некоторое количество областей памяти, которые объединяются с помощью индексов, доступ к ним получают посредством одной и той же переменной. Однако для получения конкретной области памяти массива нужно указать индекс.
Пример:
var arr = [«a», «b», «c»]; // был объявлен массив с инициализации — мы сохранили в переменную несколько строковых значений
console.log(arr[0]); // a
console.log(arr[1]); // b
console.log(arr[2]); // c
console.log(arr); // a, b, c — без указания индекса получаем все значения массива
Таким образом мы ссылаемся на разные значения с помощью одной ссылки arr, а конкретное значение полeчаем через индекс. С объектами все немного по другому. Основная переменная — это ссылка на комплекс переменных и функций объекта.
Пример:
var obj = { // создаем объект — комплексное хранилище свойств и функций
b: «b»,
d: function(){return 90;}
}console.log(obj.a); //a
console.log(obj.b); //b
obg.d(); // 90
Таким образом мы упаковали множество переменных в объект, доступ к которым осуществляется через основную переменную obj.