2024-07-14|閱讀時間 ‧ 約 23 分鐘

變數作用域

    就是指變數可以被訪問和使用的範圍,來說一下var、let和const的作用域差異。

    var :

    function example() {
    console.log(x); // 輸出: undefined 因為變量提升造成的
    var x = 5;
    }

    • 函數作用域或全域作用域
    • 可以重複宣告
    • 存在變數提升(hoisting)
    • 變量提升只提升聲明,不提升初始化


    let :

    if (true) {
    let y = 10;
    }
    console.log(y); // 錯誤: y is not defined,因為已經不在{}裡面

    • 塊級作用域
    • 不可重複宣告
    • 不存在變數提升


    const :

    const z = 15;
    z = 20; // 錯誤: 不可以重新賦值

    • 塊級作用域
    • 不可重複宣告
    • 不可重新賦值 (但對於物件和陣列,其內容可以修改)
    • 不存在變數提升

    主要區別 :

    作用域 :

    • var: 函數作用域
    • let 和 const: 塊級作用域

    重複宣告 :

    • var: 允許
    • let 和 const: 禁止

    變數提升 :

    • var: 會被提升
    • let 和 const: 不會被提升(存在暫時性死區)

    重新賦值 :

    • var 和 let: 允許
    • const: 禁止(對於基本類型)


    參考資料 :

    在 JavaScript 中用 var, let, 以及 const 有什麼差別?什麼時候該用哪個? |ExplainThis

    分享至
    成為作者繼續創作的動力吧!
    © 2024 vocus All rights reserved.