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


區別一 使用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的限制


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM