Это первый из 100 дней моего изучения javascript, и сегодня я узнал о ключевом слове javascript var.

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

var a = 100;
console.log(a);  //100

function print() {
  var b =200;
  console.log(b);   //200
}
var a=100;
console.log(a);       //100

if(true) {
  var b= 200;
  console.log(b);     //200
}

console.log(a);       //100
console.log(b);       //200 (acessible as javascript doesnot have block scope)

function print() {
  var c = 300;
  console.log(a);    //100
  console.log(b);    //200
  console.log(c);    //300
}

print();

console.log(a);     //100
console.log(b);     //200 
console.log(c);     //error:(Uncaught ReferenceError: c is not defined)
                    // c is in function scope pf function print

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

var a=100;
console.log(a);     //100

var a;              // no error even with duplicate declaration
console.log(a);    //100

var a=90;          // no error even with duplicate declaration 
console.log(a)     //90

объявления var, где бы они ни встречались, обрабатываются до выполнения любого кода.

a=100;
var a;
console.log(a);   //100

implicitly understood as
var a;
a=100;
console.log(a)   

hence no issue even if variable is used before declarion

переменная, объявленная с помощью var, имеет начальное значение undefined.

var a;
console.log(a);   //undefined

вар подъемный

Поскольку объявления var обрабатываются до выполнения любого кода, объявление переменной в любом месте кода эквивалентно объявлению ее в начале. Это также означает, что переменная может казаться используемой до того, как она будет объявлена. Такое поведение называется поднятие, так как кажется, что объявление переменной перемещается в начало функции или глобального кода. Вот почему рекомендуется всегда объявлять переменные в верхней части их области действия.

поднимается только объявление переменной, а не ее инициализация. Инициализация происходит только при достижении оператора присваивания. До тех пор переменная остается undefined (но объявленной):

function print() {
  console.log(b); // undefined
  var bar = 1;
  console.log(b); // 1
}
function print() {
  var b;
  console.log(b); // undefined
  bar = 1;
  console.log(b); // 1
}

Это все на сегодня. Догонят завтра.

Спасибо за прочтение. Пожалуйста, хлопайте, если вам понравилась статья.

Продолжай учиться!

#100daysofjavascript