亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

ES6 不允許變量名稱 - 為什么名稱“let”和“const”的行為不同?

ES6 不允許變量名稱 - 為什么名稱“let”和“const”的行為不同?

牧羊人nacy 2023-08-05 19:27:13
我正在嘗試不明智的變量聲明,并得出以下觀察結果。定義一個名為 的變量'let',如下所示:let let = 7;不出所料,會導致錯誤:SyntaxError: let is disallowed as a lexically bound name。嘗試對變量 name 執行相同的操作'const',如下所示:let const = 7;導致不同的錯誤: SyntaxError: Unexpected token 'const'。查看規范,第13.3.1.1 節靜態語義:早期錯誤不允許'let' 在這種類型的聲明中作為變量名(沒有提及'const')。這更像是一種好奇,但是幕后發生了什么,這只會被視為'let' 不允許的變量名,同時被'const' 解釋為令牌?(順便說一下,var let = 7JavaScript 在語法上似乎是正確的,同時var const = 7也會導致錯誤SyntaxError: Unexpected token 'const'。)
查看完整描述

1 回答

?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

基本上是出于向后兼容性的原因。就像 Felix 所說的那樣,const 是一個保留字——暫時是這樣。

像下面這樣的代碼是合法的 JavaScript(松散模式),因為let它只是一個單詞:

var let = 50;
console.log(let);

請注意,事實上,當添加嚴格模式時,let它被保留在其中:

當以下標記出現在嚴格模式代碼中時,也被視為 FutureReservedWords(請參閱 10.1.1)。

儲備讓。

有趣的是,ES3 規范中也保留了const 。


查看完整回答
反對 回復 2023-08-05
  • 1 回答
  • 0 關注
  • 286 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號