var、let 和 const的區(qū)別

1.變量和常量關鍵詞
1.1 let 關鍵詞

  • 有塊級作用域 (防止變量污染):一對大括號就是一個程序塊,在大括號之中聲明的變量,出了大括號就不能用了
      for (let i = 1; i <= 5; i++) {
        console.log(i); // 1 2 3 4 5
      }
      console.log(i); // 報錯 i is not defined

  • 沒有變量提升 (保證程序的邏輯通暢)
      console.log(a); //undefined
      var a = 10;
      console.log(b); //Cannot access 'b' before initialization
      let b = 10;
  • 不能重復聲明變量 (保證變量唯一性)
      let a = 20;
      let a = "nihao"; 
      console.log(a);//報錯: Identifier 'a' has already been declared
  • 暫時性死區(qū)(塊級作用域內部聲明的變量如果和外部聲明的變量重名,不會沖突)
//雖然在一個頁面中聲明了兩個同名的變量,但是處于不同的作用域內,所以不會產生報錯
let a = 10;
{
    let a = 'abc';
    console.log(a);   //正常輸出abc
}
console.log(a);  //正常輸出10

1.2 let 塊級作用域

    <button>btn1</button>
    <button>btn2</button>
    <button>btn3</button>
    <script>
      var btns = document.querySelectorAll("button");
      //使用var聲明i, 則i是全局變量; 循環(huán)完成后 i 的值為 3
      for (var i = 0; i < btns.length; i++) {
        btns[i].onclick = function() {
          console.log(i); //此時點擊任意按鈕,輸出的內容都是3
        };
      }
      //使用let聲明的 i 是有塊級作用域的,即每進行一次循環(huán),都在內存中開辟一塊獨立的空間來保存當前 i 的值
      for (let i = 0; i < btns.length; i++) {
        btns[i].onclick = function() {
          console.log(i);
        };
      }
    </script>

1.3 const 常量
一旦賦值就不能改變的量就是常量, 常量也有塊級作用域
特點:

  • 也有塊級作用域
//用塊級作用域
{
   const PI = 3.14;
   console.log(PI);
}
console.log(PI);   //報錯:  PI is not defined
  • 必須要初始化值
//必須初始化
const PI;   //報錯: Missing initializer in const declaration
  • 復雜數(shù)據類型可以更改內部值
const obj = {
    name: 'zs',
    age : 20,
    say : function () {
        console.log('ok');
    }
}
// obj = {}; //報錯
obj.name = 'ls';
obj.say = function () {
    console.log('okok');
}

var、let 和 const的區(qū)別

  • var和let都能聲明變量,但是let更嚴謹一些,以后都推薦使用let來聲明變量。
  • let的特殊點: 不能提升變量(保證程序的邏輯通暢)、 有塊級作用域(避免變量交叉污染)、不能重復聲明保證變量的唯一性,塊級作用域會暫時性死區(qū)
  • const用來聲明常量,常量是不能改變的量,常量也有塊級作用域,初始化常量時必須賦值
  • 能用const就用const (因為cosnt速度更快)
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容