Исходя из опыта работы с C++ и Java, я знал только, что сначала нужно указать тип переменной, а затем идентификатор. Но в JavaScript все иначе. Есть три ключевых слова var, let и const для объявления переменных.

Здесь я объяснил, что я понял об этих ключевых словах и чем они отличаются.

var, let и const — это ключевые слова JavaScript, которые позволяют нам объявлять переменные.

var a = 7;
let b = 14;
const c = 14;

Тогда вы можете удивиться, зачем три ключевых слова для объявления переменных? какая разница?

Ну, разница есть, переменные, объявленные с использованием этих ключевых слов, работают по-разному.

Давайте посмотрим, что var для

Объем переменной

Область действия — это область программы, в которой могут использоваться эти переменные. Переменные, объявленные с использованием var, имеют область видимости функции/глобальную область видимости. Когда переменная объявляется с помощью var, внутри функции она находится в области действия функции, доступна для использования внутри функции, а если она объявлена ​​вне функции, то они имеют глобальную область действия и могут использоваться во всей программе.

Посмотрите на пример ниже

var number = 10;  //global scope  
function add (a, b){  
   var result = a + b; //funtion scope 
}

здесь number имеет глобальную область действия, поскольку она объявлена ​​вне функции, тогда как result является областью действия функции, поскольку она находится внутри функции, доступ к ней возможен только внутри функции.

var number = 10;  //global scope
console.log(number); //works
function add (a, b){
	var result = a + b; //funtion scope
}
console.log(number); //works
console.log(result); //error

Кроме того, переменные, объявленные с помощью ключевого слова var, могут быть повторно объявлены и переназначены.

var number = 10;
number = 7; //reassigned

Но повторная декларация в том же объеме?

Приведенный ниже код действителен. Если вы, как и я, переходите к JavaScript из опыта работы с Java или C++, вы скажете, что это не сработает. Но нет, это будет работать и не выдаст никакой ошибки.

var number = 10;
var number = 49; //redeclaration

Кроме того, перед объявлением можно использовать var переменных.

Так что используйте var с умом. Прежде чем использовать его, убедитесь, что вам действительно нужна переменная var.

  • переменные var имеют область видимости функции
  • переменные, определенные с помощью ключевого слова var, могут быть переобъявлены
  • переменные, определенные с помощью ключевого слова var, могут быть переназначены
  • переменные var можно использовать перед объявлением

пусть ключевое слово

Ключевое слово let было введено в ES6 (2015).

Область: let ограничена блоком. Блок — это код, записанный внутри { }. Все, что находится внутри этих фигурных скобок, является блоком.

Таким образом, переменная, объявленная с использованием ключевого слова let, доступна внутри блока.

посмотрите на пример ниже.

let number = 50;
function add(a, b){
	let result = a + b;
	if(result > 10){
		let result = 10;
		consolo.log(result);  //works and result = 10
	}
	console.log(result);  // result = a + b;
}

Приведенный выше код работает, потому что result, объявленные в разных блоках, обрабатываются как разные переменные (область действия блока).

Переменные, объявленные с помощью let, могут быть переназначены, но, в отличие от var, переменные let не могут быть повторно объявлены в той же области.

let number = 10;
number = 50; //reassignment within same block
let number = 90; //error: cannot be redeclared

В отличие от var, переменные let нельзя использовать перед объявлением.

  • пусть переменные имеют блочную область видимости
  • переменные, определенные с ключевым словом let, не могут быть повторно объявлены
  • переменные, определенные с помощью ключевого слова let, могут быть переназначены
  • должны быть объявлены перед использованием

константное ключевое слово

Ключевое слово const было введено в ES6 (2015).

Область видимости: как и let, переменные, объявленные с помощью const, имеют блочную область видимости и доступны только в том блоке, в котором они были объявлены.

пример:

const length = 50;
console.log(length); // 50
{
	const length = 100;
	console.log(length); //100
}

length переменные рассматриваются как разные переменные, поскольку они находятся в разных блоках.

В отличие от var и let, переменные const нельзя повторно объявить и переназначить.

Это означает, что значение переменной const остается неизменным внутри блоков. Его нельзя ни переназначить, ни переобъявить.

пример:

const length = 50;
console.log(length); // 50
length = 70; //error: Assignment to constant variable
const lenght = 50;
const length = 100; //error, cause it is already declared

Однако для объектов, объявленных с помощью const, их свойства можно переназначить, но сами объекты переназначить нельзя.

Потому что ключевое слово const не определяет постоянное значение. он определяет постоянную ссылку.

Следовательно, свойства объекта могут быть изменены, поскольку здесь ссылка остается постоянной.

пример:

const array = ['Mango', 'Pear'];
array[1] = 'Apple';  //can do this
array = ['Mango', 'Apple'];  //cannot do this
const fruit = {name:'Apple', amount: 15};
fruit.amount = 50; //can do this
fruit = {name: 'Apple', amount: 50}; //cannot do this

В приведенных выше примерах показано, как можно обновить свойства объекта и массива, но нельзя переназначить сам объект, массив.

Всегда используйте const, если уверены, что значение переменной не изменится.

  • константные переменные имеют блочную область видимости
  • переменные, определенные с помощью const, не могут быть переназначены
  • переменные, определенные с помощью const, не могут быть повторно объявлены
  • переменные, определенные с помощью const, не могут использоваться до объявления

Это было все о разнице между var, let и const.