ES6常量宣告方式 const

2021-10-08 23:49:49 字數 1691 閱讀 1610

今天就來聊聊es6常量的宣告方式。

在es5中定義乙個常量:

object.

defineproperty

(window,

'pi',)

console.

log(pi)

5console.

log(pi)

在es6中定義乙個常量

//典型報錯

const a=5a=

6//報錯,常量不可以改變

const b//報錯,常量必須賦初始值b=6

//const宣告的陣列、物件的值可以被改變,不能改變的是變數的引用位址

const obj=

console.

log(obj)

'gdut'

obj.name=

'www'

console.

log(obj)

//const arr=[1

,2,3

]arr.

push(4

)console.

log(arr)

//[1,2,3,4]

//要是想固定值不變,可以用object.freeze()凍結

const obj=

}console.

log(obj)

//}object.

freeze

(obj)

//freeze只能傳物件不能傳陣列 做淺層凍結

object.

freeze

(obj.skill)

//手動遞迴凍結第二層

obj.school=

'gdut'

obj.skill.year=

12console.

log(obj)

//}

常見的作用域分為以下幾個型別:

物件型別

window/global

全域性作用域

function

函式作用域/區域性作用域

{}塊狀作用域

this

動態作用域

更多關於作用域建議閱讀(.

const宣告的塊級作用域:

if

(true

)console.

log(a)

//報錯 a未定義 a僅在塊級作用域有效

先來看看什麼叫變數提公升。

var 宣告的變數會在任意**執行前處理,這意味著在任意地方宣告變數都等同於在作用域頂部宣告——即宣告提公升(可以在宣告語句之前使用)。

console.

log(a)

//undefine (列印出undefined而不是報錯,可見var存在變數提公升)

var a =

5//相當於

// var a

// console.log(a)

// a=5

function

foo(

)foo()

//undefined

//相當於

//function foo()

//foo()

const宣告的常量不存在變數提公升

if

(true

)

es6的常量的宣告

在 es6 中里也可以使用 const 語法進行宣告。使用 const 宣告的變數會被認為是常量 constant 意味著它們的值在被設定完成後就不能再被改變。正因為如此,所有的 const 變數都需要在宣告時進行初始化,示例如下 有效的常量 const maxitems 30 語法錯誤 未進行初始...

ES6 變數 常量宣告總結

較之前es5,新版本在宣告上有改變,現根據文件教程,總結下不同之處,時長溫習。let只在命令所在的 塊 裡有效 es5只有全域性作用域和函式作用域,沒有塊級作用域,帶來很多不合理的場景,比如 第一種場景,內層變數可能會覆蓋外層變數。var tmp new date function f f unde...

ES6 變數宣告方式

var,function,let,const,import,class1.let只在所在的 塊中有效 2.以前我們需要用iife解決的問題 3.不存在變數宣告提公升 4.暫時性死區tdz 1.let只在所在的 塊中有效 2.以前我們需要用iife解決的問題 3.不存在變數宣告提公升 console....