← Комьюнити

Ошибка или нет?

student_COKKGItA1 ответов

Здравствуйте. Не знаю ошибка ли это или нет, но в курсе о modern js там где объясняется разница между let и var

var balance = 2000;
if (balance > 0) {
    let balance = 3000;
    console.log(balance);
}
console.log(balance);

Автор курса, для примера, закомментировал первую строчку:

//var balance = 2000;
if (balance > 0) {
    let balance = 3000;
    console.log(balance);
}
console.log(balance);

и обратил внимание зрителя на ошибку, которая возникла после этого.

Но ведь ошибка возникла из-за того, что ранее стоит проверка if (balance > 0) и не определена переменная, а не из-за вывода переменной balance вне блока if

1 ответов

Смысл в том, что переменные с ключевым словом let видны только внутри блока. Если даже заменить проверку на такую и убрать заккоментировать console.log внутри блока if:

		//var balance = 2000;
		if(true) {
			let balance = 3000;
			//console.log(balance);
		}
		console.log(balance);

будет ошибка balance is not defined.  Но если внутри блока if переменная balance будет с var, тогда ошибки не будет и в console.log за пределами блока if будет выведено 3000:

              //var balance = 2000;
		if(true) {
			var balance = 3000;
			//console.log(balance);
		}
		console.log(balance);

student_zhO6Hwd_
Ошибка или нет? — FructCode | FructCode