JavaScript 對{} 的解釋中的區塊與物件
解析程式碼時,JavaScript 面對著將「{}」解釋為的「{}」解釋為的歧義空塊或空物件。為了確定使用哪種解釋,JavaScript 遵循其規格中定義的語法。
根據語言規範,Statement 可以採用 Block、VariableStatement、EmptyStatement 或 ExpressionStatement 的形式。區塊被定義為“{}”,後面跟著以“}”結尾的可選語句列表。
因此,當 JavaScript 遇到「{}」時,它首先認為它是一個區塊,因為「{} " 匹配區塊的語法。只有當解析器無法將其解釋為 Block 時,才會將 {} 視為空對象,該物件屬於 ExpressionStatement 類別。
在提供的範例中,「{}[]」被解釋為一個空塊,後面跟著一個一元加號和一個空數組。空塊不執行任何操作,數組將轉換為空字串,然後將其轉換為數字 (0)。
Firebug 將此輸入解釋為語句,導致計算結果為未定義的空白區塊。另一方面,Node.js 將其視為表達式,無法將其解析為 Block,並計算為 {}。
這種差異是由於各個 JavaScript 引擎對輸入的不同解釋所造成的。 Firebug 和 Chrome 開發工具將其視為一條語句,將 {} 視為一個空區塊,而 Node.js 將其視為一個表達式,從而產生一個空物件。
以上是解析 {} 時,將其解釋為什麼:區塊還是物件?的詳細內容。更多資訊請關注PHP中文網其他相關文章!