2017-02-23 146 views
2

鑑於是否可以刪除使用const聲明的變量?

const localName = "local_name"; 
delete localName; // true 
console.log(localName); // "local_name" 

是否可以刪除一個變量使用const宣佈?

+1

沒有它不可能做刪除或重新定義常量範圍內 – cyrix

+3

恆定從https://stackoverflow.com/questions/1596782/how-to-unset-a-javascript-variable: *「關鍵是'delete'操作符從一個對象中刪除一個屬性,它不能刪除一個變量。」*所以答案是否定的(不管是否使用'const','var'或'let')。 –

+1

http://perfectionkills.com/understanding-delete/ – Bergi

回答

6

delete用於從對象中刪除屬性。

delete foo; 

將嘗試從全局對象刪除屬性foo。使用delete(無論您使用const,let還是var)都不能刪除已聲明的變量,並且沒有其他方法可以刪除「變量」(綁定)(see @T.J.'s comment for some more details)。

相關:How to unset a JavaScript variable?

+2

(我知道*你*知道這一點,但對於潛伏者......)有趣的是,*理由*你不能刪除'const','let',或全局範圍內的'class'與'delete'不同的是你不能從全局範圍中刪除'var',儘管規範決策的基本動機大體上是相同的(我懷疑)。但是,既然你不能'刪除'... :-)你不能使用'delete'從全局對象中刪除'const','let'或'class',因爲它們不是* on *首先是全局對象! (雖然全局'var'是,但它不可刪除。) –

+0

是的,我的假設是,即使'const'等被添加到全局對象,它也不會被允許,就像'var'一樣。 –

+0

@FelixKling是否聲明'const'變量不能被改變? – guest271314

相關問題