1. 程式人生 > 程式設計 >JavaScript中var let const的用法有哪些區別

JavaScript中var let const的用法有哪些區別

目錄
  • 1.重複宣告
    • 1.1 var
    • 1.2 let
    • 1.3 const
  • 2.變數提升
    • 2.1 var
    • 2.2 let
    • 2.3 const
  • 3.暫時性死區
    • 3.1 var
    • 3.2 let
    • 3.3 conset
  • 4. window物件的屬性和方法
    • 5.塊級作用域

      1.重複宣告

      var支援重複宣告,let、const不支援重複宣告。

      1.1 var

      var a = 1;
      var a = 2;
      console.log(a);
      

      輸出結果:

      2

      1.2 let

      let b = 3;
      let b = 4;
      console.log(b);
      

      輸出結果:

      Uncaught SyntaxError: Identifier 'b' has already been declared

      1.3 const

      const c = 5;
      const c = 6;
      console.log(c);
      

      輸出結果:

      Uncaught SyntaxError: Identifier 'c' has already been declared

      2.變數提升

      var支援變數提升,但是隻提升宣告不提升值。let、const不支援變數提升。

      2.1 var

      a=2;
      console.log(a);
      var a = 1;
      

      輸出結果:

      2

      2.2 let

      a=2;
      console.log(a);
      let a = 1;
      

      輸出結果:

      Uncaught ReferenceError: Cannot access 'a' before initializat

      ion at index.html:28

      2.3 const

      a=2;
      console.log(a);
      const a = 1;
      

      輸出結果:

      Uncaught ReferenceError: Cannot access 'a' before initialization at index.html:28

      3.暫時性死區

      var不存在暫時性死區,let、const存在暫時性死www.cppcns.com區。
      只要作用域記憶體在let、const,它們所宣告的變數或常量就自動“繫結”在這個區域,不再受外部作用域影響。

      3.1 var

      var a = 1;
      function fun() {
          console.log(a);
          var a = 2;
      }
      fun();
      

      輸出結果:

      undefined

      3.2 let

      let a = 1;
      function fun() {
          console.log(a);
          let a = 2;
      }
      fun();
      

      輸出結果:

      Uncaught ReferenceError: Cannot access 'a' before initialization

      3.3 conset

      let a = 1;
      function fun() {
          console.log(a);
          const a = 2;
      }
      fun();
      

      輸出結果:

      Uncaught ReferenceError: Cannot access 'a' before initialization

      4. windo客棧w物件的屬性和方法

      全域性作用域中,var宣告的變數、通過function宣告的函式,會自動變成window物件的屬性和方法。

      var a = 1;
      function add() { };
      console.log(window.a === a);
      console.log(window.add === add);
      

      輸出結果:

      true
      true

      5.塊級ckGfj作用域

      var沒有塊級作用域,let、const有塊級作用域。
      使用var在for迴圈中定義變數i:

      for (var i = 0; i < 3; i++) {
          // console.log(i);
      }
      console.log(i);
      

      輸出結果:

      3

      使用let在for迴圈中定義變數i:

      for (let i = 0; i < 3; i++) {
          // console.log(i);
      }
      console.log(i);
      

      輸出結果:

      Uncaught ReferenceError: i is not defined

      到此這篇關於中var let const的用法有哪些區別的文章就介紹到這了,更多相關Script var用法內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!