JavaScript中的var、let和const:區(qū)別與使用
當(dāng)前位置:點(diǎn)晴教程→知識(shí)管理交流
→『 技術(shù)文檔交流 』
今天咱們來(lái)聊聊JavaScript中的三個(gè)關(guān)鍵字:var、let和const。它們?cè)谧兞柯暶鞣矫娓饔刑厣?,讓我們一起?lái)看看它們之間的區(qū)別吧! 一、varvar 聲明的變量既是全局變量,也是頂層對(duì)象的屬性。例 如,在瀏覽器環(huán)境中,var a = 10; 會(huì)使得window.a 等于10。?「變量提升」:var 聲明的變量存在變量提升的情況。比 如,console.log(a); var a = 20; 會(huì)被編譯器解析 為var a; console.log(a); a = 20; ,所以輸出undefined 。?「多次聲明」:可以對(duì)一個(gè)變量進(jìn)行多次聲明,后面聲明的變量會(huì)覆蓋前面的變量聲明。 例如,var a = 20; var a = 30; 最終a 的值是30。?「局部作用域」:在函數(shù)中使用var 聲明的變量是局部的,不會(huì)影響到外部變量。例 如,function change() { var a = 30; } 不會(huì)改變外部的a 。二、letlet 是ES6新增的關(guān)鍵字,用于聲明變量,并且只在let 命令所在的 代碼塊內(nèi)有效。例如,{ let a = 20; } 外面訪問(wèn)a 會(huì)報(bào)錯(cuò)。?「不存在變量提升」:let 聲明的變量不存在變量提升。例 如,console.log(b); let b = 2; 會(huì)直接報(bào)錯(cuò)。?「暫時(shí)性死區(qū)」:在聲明let 變量之前,該變量是不可用的,稱(chēng)為“暫時(shí)性死區(qū)”。例 如,var a = 123; if (true) { a = 'abc'; let a; } 會(huì)報(bào)錯(cuò)。?「不允許重復(fù)聲明」:在同一作用域中不能重復(fù)聲明同一個(gè)變量。例 如,let a = 20; let a = 30; 會(huì)報(bào)錯(cuò)。三、constconst 聲明的變量是只讀的,一旦聲明就不能修改。例 如,const a = 1; a = 3; 會(huì)報(bào)錯(cuò)。?「必須初始化」:const 聲明的變量必須立即初始化,不能留到以后賦值。例 如,const a; 會(huì)報(bào)錯(cuò)。?「復(fù)雜類(lèi)型」:對(duì)于復(fù)雜類(lèi)型的數(shù)據(jù)(如對(duì)象),const 只能保證指針不變,不能保證 對(duì)象內(nèi)部結(jié)構(gòu)不變。例如,const foo = {}; foo.prop = 123; 是允許的, 但foo = {}; 會(huì)報(bào)錯(cuò)。四、區(qū)別總結(jié)var 有變量提升,let 和const 沒(méi)有。?「暫時(shí)性死區(qū)」:var 沒(méi)有,let 和const 有。?「塊級(jí)作用域」:var 沒(méi)有,let 和const 有。?「重復(fù)聲明」:var 允許,let 和const 不允許。?「修改聲明的變量」:var 和let 可以,const 不可以。使用建議能用 希望這篇文章能幫助你更好地理解 該文章在 2025/7/11 16:46:44 編輯過(guò) |
關(guān)鍵字查詢(xún)
相關(guān)文章
正在查詢(xún)... |