Программы оперируют данными. Данные надо где-то хранить. Хранить в соответствии с типом и структурировано. Ведь нельзя же одинаково хранить молоко и мыло. Во-первых их надо хранить отдельно, в разных условиях: молоко в холодильнике,  мыло на полке в шкафу. 

Данные хранятся в специальных хранилищах: переменных. Переменная — это как абстрактная коробка, в которую мы кладем конкретное значение определенного типа. Мы можем изменять значение в коробке столько раз, сколько захотим. При этом старые значения удаляются безвозвратно,  если не были сохранены куда-то еще. 

Так же и с переменными. У каждой из них свой тип, поэтому свои особые условия хранения в памяти компьютера. И чтобы компьютер понял, что ему необходимо выделить ресурсы под переменную, а не под функцию, существует специальное слово (или инструкция языка программирования) 

let или устаревший вариант var.

let string = “Hi!”;

let number =  152;

Можно объвить несколько переменных в одной строке:

let user = ‘Mark’,

    age = 35,

     job = ‘manager’;

Различия между let и var. Область видимости: локальные и глобальные переменные.

Существует глобальная и локальная область видимости для переменной. Глобальные переменные доступны во всем модуле, в любой функции или объекте модуля. Локальная переменная доступна только внутри функции или внутри логического блока, ограниченного фигурными скобками {}.

Разница в том, что для var не существует блочной области видимости. К примеру, переменная, объявленная в блоке условия if, будет видна и доступна для обращения и изменения и за скобками блока условия. 

if (true) {

  var message = ‘Just some info’; // используем var вместо let

}
console.log(message);  // значение будет доступно, не приведет 
// к ошибке и содержимое переменной message будет выведено в консоль.

А если  написать тоже самое, но через let, то вот что будет:

if (true) {

  let message = ‘Just some info’; // используем var вместо let

}

console.log(message); // Error: message  is not defined. “Переменная не определена”.

Т.е. интерпретатор JavaScript не видит переменную message, он не знает о ее существовании, потому что она удалилась как только токен исполнение программы вышел за закрывающую фигурную скобку (то бишь за пределы) блока if.

Аналогично и для циклов. 

for (var i = 0; i < 10; i++) {

  // ...

}

console.log(i);  // i=10. Т.е. i доступна вне цикла. 

 

Преобразования типов.

Строковые преобразования

Когда переменную нужно явно преобразовать из любого другого примитивного типа к строке, используется конструкция вида

String(value). 

Т.е.если true становится “true”, undefined становится “undefined ”  итд.

Числовое преобразование

Когда есть запись математического выражения, то численное выражение происходит автоматически. Например:

console.log(“15” / “5”); // 3. Строка превратилась в число

Но можно использовать явное преобразование при помощи

Number(value)

Но не всегда значение можно преобразовать в число, даже при помощи явного преобразования.

let string = Number("Этот текст - строка");

console.log(string);  // Nan, преобразование не удалось

 

Логическое преобразование

Самое простое будет логическое преобразование. Потому что вариантов немного )

Автоматически логические преобразования происходят в логических операциях. К примеру:

let age = 14 + 5;

if (age > 18) { // true, здесь мы проверяем, меньше или больше 18 переменная age?

// получаем, что age = 19 больше 18, что приобретает значение ИСТИНА  

}

Явное преобразование происходит с помощью функции  Boolean(value).

Например:

console.log(Boolean(1)) // выведет true
console.log(Boolean(0)) // выведет false