Переменная – это 'именованный контейнер' который хранит в себе определенные значения(данные). Мы можем использовать переменные для хранения любых данных - числа, строки, объекты, функции и так далее. Для объявления переменных существует три директивы(Ключевые слова):
let;
const;
var;
Просто прописываем после них имя переменной и она готова.
let a;
const b;
var c;
Для присваивания в переменную используем оператор присваивания.
Выглядит он как знак равенства в математике ' = '.
Но в js и многих других языках, это знак присваивания.
let a = 1;
const b = 2;
var c = 3;
console.log(a,b,c) // 1 2 3
Сами переменные не являются значениями они лишь служат хранилищем, поэтому когда вы присваиваете в переменную другую переменную, вы присваиваете ее значение. Это важно запомнить.
let a = 1;
const b = a;
console.log(b) // 1
Что бы перезаписать переменную пишем ее имя и присваиваем нужное значение.
let a = 10;
a = 15;
console.log(a); // 15
Область видимости - это определенный предел(рамки) в которых могут действовать наши переменные. Если мы просто в потоке кода объявим переменную, это будет глобальная переменная и доступ к ней будут иметь все.
'use strict'
// это наш js файл
let a = 1;
const b = 2;
var c = 3;
function sum () {
return a + b + c;
}
console.log(sum()) // 6
Функция sum
имела доступ ко всем переменным a,b,c
и если будет цикл или условие, то они тоже будет иметь к ним доступ.
Они доступны из любого места программы.
По возможности минимизируем использовние глобальных переменных. Их использование нарушает инкапсуляцию, приводит к коллизии в коде и проблемам с модулями.
Есть определение локальной области кода, задается она с помощью фигурных скобок { }
- это блок кода.
Он может быть безымянным или же именованным, функции, циклы и тд.
'use strict'
{ // помещаем переменные в блок кода
let a = 1;
const b = 2;
var c = 3;
}
function sum () {
return a + b + c;
}
console.log(sum()) // будет ошибка 'is not defined'. Программа не найдет эти переменные.
И так мы подходим к различиям переменных и их поведению в этих самых блоках кода.
let; // Это современный способ объявления переменной.
var; // устаревший способ, всегда будет встречаться в старом коде
const // Это неизменная переменная(константа) - ее значение не менятся.
var x = 2; // глобальная переменная 'x'
{
var x = 1; // локальная переменная 'x' в блоке кода {}
}
console.log(x); // будет 1 var перезаписала себя!
Область видимости переменных var
ограничивается либо функцией, либо, скриптом если она глобальная.
if(true) { // у нас есть некое правдивое условие.
var hi = 'hi'; // внутри блока кода есть переменная hi
}
console.log(hi); // выводим ее вне блока и получаем строку hi
//(видимость var не ограничена условиями, циклами или другими блоками, кроме функции)
Используем функцию:
function f1 () { // есть некая функция f1
var hi = 'hi' // внутри так же переменная hi
}
console.log(hi); // теперь будет ошибка('hi' is not defined), у нас к ней нет доступа.
let y = 2; // глобальная переменная 'y'
{
let y = 1; // локальная переменная 'y'
console.log(y); // будет 1
}
console.log(y); // будет 2
У let
область видимости ограничивается любыми блоками кода { }
. Будь то цикл, условие или функция.
if(true) { //
let hi = 'hi'; // Теперь везде используем let
}
console.log(hi); // ошибка('hi' is not defined)
Используем функцию:
function f1 () {
let hi = 'hi'
}
console.log(hi); // ошибка ('hi' is not defined)
const str = 'я строка' // объявили переменную
str = 'нет, это я строка' // пытаемся поменять значение
console.log(str) // Assignment to constant variable.
// выдает ошибку, так как мы пытаемся переписать константу
Константу мы не можем менять, у неё фиксированое значение.
Но! В javaScript прямых констант не бывает.
Создадим объект через const
const obj = {
a:10 // внутри укажем свойство со значением.
}
obj.a = 5; // перепишем его
console.log(obj.a) // 5
Мы не можем изменить obj
, но можем изменять - a
внутри константы - obj
Так как - a
не является константой.
Так будет с массивами и другими объектными значениями.
В остальном const
работает также как и let
.
Немного про const
.
Хорошим тоном считается писать константы в верхнем регистре. Но так делают не всегда, сейчас тенденция такая, что мы вообще везде используем const где можем обойтись без let
и писать все капсом необязательно.
const MY_VARIABLE = 1;
JavaScript чуствителен к регистру. Это две разные переменные:
let anime = 'gavno'
let Anime = 'gavno'
В js есть ограничение для имён. Имя может содержать буквы, цифры и символы $ или _.
Примеры допустимых имён:
let hello;
let hello123;
let hi$;
let $_;
Так же первый символ не должен быть цифрой. Если нужно использовать несколько слов, то используем верблюжью нотацию(Это когда каждое слово после предыдущего начинается с заглавной буквы). Пример:
let userName;
let animeGovno;
let iPoshytil;
let vsemPrivetItMe;
Примеры неправильных имён переменных:
let 2gays; // не может начинаться с цифры
let hi-hi; // дефис '-' не разрешён в имени