let กับ var ต่างกันอย่างไร


การประกาศตัวแปรใน javascript นั้น เราใช้คำสั่ง var ตามด้วย ชื่อตัวแปร
แต่ Javascript ES6 ได้เพิ่ม การประกาศตัวแปรแบบ let  มาด้วยในที่นี้จะอธิบายความแตกต่างระหว่างการประกาศตัวแปรระหว่าง let กับ var

function foo()
{
         var x=0;

         if(true)
        {
             var x = 1;
        }
 
        return x;
}

function bar()
{
         let x=0;

         if(true)
        {
            let x = 1;
         }
 
         return x;
}

alert(foo());//แจ้งเตือน 1
alert(bar());//แจ้งเตือน 0

สรุป 

สำหรับ var

var x=0;

if(true)
{
    var x = 1;
}

x ใน block if กับ x ภายนอกจะถือว่าเป็นตัวเดียวกัน

แต่สำหรับ let 

let x=0;

if(true)
{
     let x = 1;
}
 
 x ใน block if กับ x ภายนอกจะถือว่าเป็นคนละตัวกัน