為什么 JS 規范呼叫this關鍵字而不是文字?
它更像是一個文字,因為我們可以將它用作一個值,或者我錯過了什么?
return this
之后怎么樣了?
uj5u.com熱心網友回復:
這并不重要,但它是根據規范的關鍵字:請參閱關鍵字和保留字和文字。該規范還在文本中使用了短語“keyword this”,例如(隨機選擇一個實體),在抽象GetThisEnvironment操作部分中有此文本:
this...它使用正在運行的執行背景關系的 LexicalEnvironment確定關鍵字的系結...
該規范的早期版本對此非常明確:
[來自 ECMAScript 2019 語言規范]
11.6.2.1 關鍵詞
以下標記是 ECMAScript 關鍵字,不能用作 ECMAScript 程式中的識別符號。
句法
關鍵字 :: 之一
awaitbreakcasecatchclassconstcontinuedebuggerdefaultdeletedoelseexportextendsfinallyforfunctionifimportininstanceofnewreturnsuperswitchthisthrowtrytypeofvarvoidwhilewithyield
(我的重點。)
繼續你的問題:
它更像是一個文字,因為我們可以將它用作一個值......
我認為作為關鍵字的東西與在運算式中使用時產生值之間沒有任何沖突。this是一個關鍵字,您可以使用它來訪問當前執行背景關系(或最近的執行背景關系)的環境記錄的ThisBinding的值。
rici在評論中提出了一個非常好的觀點:他們說他們不認為this是文字,因為與 (say) trueand不同false,它沒有固定值。文字總是有相同的值,"a"總是"a",true總是true,null總是null,等等。但this在代碼的不同地方有不同的值。它實際上更像是 aconst而不是文字。范圍的環境物件中的一個隱式const集合(或者不是,在箭頭函式范圍的情況下)。
但再說一遍:這真的沒關系。它是一個在語言中具有特殊用途和功能的保留字,這似乎足以讓我們不必擔心它是關鍵字還是文字(或兩者兼而有之)。:-)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/477951.html
標籤:javascript 句法 语法 关键词 文字
