1. 程式人生 > 其它 >定義變數的三種方式及區別

定義變數的三種方式及區別

區別一 使用var在全域性作用域中宣告的變數會成為window物件的屬性,let不會

  var name='ll';
  console.log(window.name); //ll

  let age = 22;
  console.log(window.age); //undefined

區別二 let宣告的範圍是塊作用域,var宣告的範圍是函式作用域

  if(true){
    var name='ll';
    console.log(name);//ll
}
  console.log(name); //ll

if(true){
     let age=22
     console.log(age); //22
}
 console.log(age); //報錯 age未定義
 

區別三 let宣告的變數不會在作用域中被提升,var存在變數提升

   console.log(age) //報錯 age未定義   在解析程式碼時,JavaScript引擎也會注意出現在塊後面的let宣告
   let age=22;

   var name = 'll';
    function train(){
       console.log(name); 
       var name = 'll'
    }
  train() //undefined;

區別四 let不允許同一個塊作用域出現冗餘宣告,var允許,後面宣告的變數值會覆蓋前一個。

   var name = 'll';
   var name = 'lu'

   let age = 22;
   let age = 31;//報錯 識別符號age已經宣告過了

對於宣告冗餘報錯不會因為混用let和var而受影響

const宣告

const的行為與let基本相同,唯一一個重要的區別是它宣告變數時必須同時初始化變數,且嘗試修改const宣告的變數會導致執行的錯誤
如果用const宣告的是一個物件,那麼修改這個物件內部的屬性並不違反const的限制