const聲明一個(gè)只讀的常量召庞。一旦聲明她君,常量的值就不能改變身冀。
1.const和let一樣只在當(dāng)前代碼塊有效惩阶,且不能重復(fù)聲明
2.作用域不會(huì)被提升
3.聲明的常量必須被賦值
而let和const都是在聲明所在的塊級(jí)作用域內(nèi)有效,let聲明的變量可以改變急黎,值和類型都可以改變扎狱,而const聲明的變量一開(kāi)始就需要初始化,不能留在后面在賦值勃教。
理論來(lái)說(shuō)const聲明的變量的值不得改動(dòng)淤击,意思其實(shí)是變量指向的那個(gè)內(nèi)存地址所保存的數(shù)據(jù)不得改動(dòng),上面代碼中故源,常量zs儲(chǔ)存的是一個(gè)地址污抬,這個(gè)地址指向一個(gè)對(duì)象。不可變的只是這個(gè)地址绳军,即不能把zs指向另一個(gè)地址印机,但對(duì)象本身是可變的,所以依然可以為其添加新屬性门驾,最后將 zs 指向另一個(gè)對(duì)象射赛,就會(huì)報(bào)錯(cuò)TypeError: Assignment to constant variable.
如果想讓定義的對(duì)象或數(shù)組的內(nèi)部數(shù)據(jù)也不能夠修改和改變,可以使用object.freeze(names)進(jìn)行凍結(jié)奶是,這樣為對(duì)象添加新屬性就不起作用楣责。