」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > JavaScript 如何解釋「{}」並區分區塊和物件?

JavaScript 如何解釋「{}」並區分區塊和物件?

發佈於2024-11-02
瀏覽:479

How Does JavaScript Interpret \

當JavaScript 將“{}”解釋為空塊時

在JavaScript 中,當一對空大括號“{}”是遇到時,解釋器最初將其解釋為空程式碼區塊而不是空物件。此行為源自於語言的語法,其中「Block」是主要語句類型之一。

Block 與 Object Literal

JavaScript 將 Block 語句定義為一對包含一組語句的大括號。另一方面,物件字面量是表達式語句,並且具有用大括號括起來的鍵值對。

解釋規則

JavaScript 解析器優先解釋「{}」作為一個區塊,因為它是比物件字面量更具體的結構。除非大括號括起鍵值對或前面有“const”或“let”等關鍵字,否則它們將被視為空白區塊。

Node.js 與Firebug 之間的不一致

如所提供的答案中所提到的,Node.js 和Firebug 解釋「{}」的方式存在差異:

  • Node.js:將「{}」視為表達式,Node.js 將其強制轉換為布林值併計算結果為false。
  • Firebug:將「{}」解釋為語句,Firebug 不會計算空塊並傳回「未定義」。

這種差異是由於 Node.js 主要將 JavaScript 計算為表達式,而 Firebug 和 Chrome 開發工具計算語句。

JavaScript 引擎中的演示

如V8(Chrome 引擎)和SpiderMonkey(Firefox 引擎)提供的程式碼片段所示,解析器首先檢查花括號,如果找到,則將它們解析為Block。

總而言之,JavaScript 的解釋「{}」作為空區塊遵循優先考慮 Block 語句的語法規則。 Node.js 和 Firebug 之間的不一致是由於它們不同的計算方法造成的,Node.js 將其視為表達式,而 Firebug 將其視為語句。

版本聲明 本文轉載於:1729221795如有侵犯,請洽[email protected]刪除
最新教學 更多>
  • IntTo Float64 JSON轉換之謎
    IntTo Float64 JSON轉換之謎
    使用 JSON 聽起來簡單明了,你有一些結構,你可以將其更改為 JSON - 一種通用的統一語言並返回到你的結構。簡單吧? ? 嗯,是的,但是直到您遇到 Marshal / Unmarshal 函數的一些奇怪行為。 問題 ? 這一切都是從我嘗試從 JWT 令牌讀取編碼的有效負載時...
    程式設計 發佈於2024-11-02
  • 如何從 Ubuntu 12.04 中徹底刪除 MySQL 5.7?
    如何從 Ubuntu 12.04 中徹底刪除 MySQL 5.7?
    刪除 MySQL 5.7:清除和卸載綜合指南要從 Ubuntu 12.04 系統中完全刪除 MySQL 5.7,請按照以下綜合步驟操作:備份資料庫在繼續卸載之前,請確保您已使用 mysqldump 公用程式備份了基本資料庫。僅備份所需的資料庫,因為完整資料庫備份可能是卸載問題的根本原因。 停止MyS...
    程式設計 發佈於2024-11-02
  • 如何在沒有 CLI 存取的情況下清除共享託管伺服器上的 Laravel 5 快取?
    如何在沒有 CLI 存取的情況下清除共享託管伺服器上的 Laravel 5 快取?
    在Laravel 5 中清除共享託管伺服器上的快取在Laravel 5 中,您可以使用cache:clear Artisan 命令有效地清除快取。但是,在共享託管伺服器上工作時,您可能無權存取 CLI。這就提出了一個問題:我可以在缺乏控制面板存取權限的共用主機伺服器上不使用 CLI 來清除快取嗎? ...
    程式設計 發佈於2024-11-02
  • Websocket 或 Socket io!讓我們來看看吧!
    Websocket 或 Socket io!讓我們來看看吧!
    WebSockets 与 Socket.IO:实时对决 当谈到网络上的实时通信时,开发人员经常发现自己陷入两个选择之间:WebSockets 和 Socket.IO。这两种工具都擅长它们的工作——提供了一种在客户端和服务器之间实现双向通信的方法——但每种工具都有自己独特的个性。这有...
    程式設計 發佈於2024-11-02
  • Deno 起飛
    Deno 起飛
    网络是人类最大的软件平台,拥有超过 50 亿用户,并且还在不断增长。然而,随着 Web 开发需求的飙升,其复杂性也随之增加。在无尽的配置文件、大量的样板文件和大量的依赖项之间,开发人员花费更多的时间来进行设置,而不是构建下一个大东西。? 进入 Deno,这是一种用于 JavaScript 和 Typ...
    程式設計 發佈於2024-11-02
  • 使用 Django Rest Framework 尋找海森堡
    使用 Django Rest Framework 尋找海森堡
    The idea The idea was to create a simple platform for DEA agents, to manage information about characters from the Breaking Bad/Better Call Sa...
    程式設計 發佈於2024-11-02
  • 湯姆和傑瑞燈代碼
    湯姆和傑瑞燈代碼
    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, ...
    程式設計 發佈於2024-11-02
  • 透過實作學習 TDD:在 Umbraco 的富文本編輯器中標記成員
    透過實作學習 TDD:在 Umbraco 的富文本編輯器中標記成員
    在我正在建構的系統中,我需要能夠在網站的文字中提及 Umbraco 會員。為此,我需要建立 Umbraco 富文本編輯器的擴充:TinyMCE。 情境 作為內容編輯者,我想在訊息或文章中標記成員,以便他們收到有關其新內容的通知。 我研究了類似的實現,例如 Slack 或 X 上的...
    程式設計 發佈於2024-11-02
  • 如何在Python測試情境中模擬HTTP請求和回應?
    如何在Python測試情境中模擬HTTP請求和回應?
    Python 測試的模擬請求和回應在Python 測試中,有必要模擬模組及其功能來控制執行流程並驗證具體場景。其中,模擬 requests 模組通常用於測試依賴 HTTP 請求的函數或方法。 考慮一個包含以下程式碼的views.py 檔案:def myview(request): res1 ...
    程式設計 發佈於2024-11-02
  • 如何建立適用於 Windows、Linux 和 macOS 的 Python 條碼掃描器
    如何建立適用於 Windows、Linux 和 macOS 的 Python 條碼掃描器
    条形码扫描已成为从零售、物流到医疗保健等各个行业的重要工具。在桌面平台上,它可以快速捕获和处理信息,无需手动输入数据,从而节省时间并减少错误。在本教程中,我们将通过构建适用于 Windows、Linux 的 Python 条形码扫描仪 继续探索 Dynamsoft Capture Vision SD...
    程式設計 發佈於2024-11-02
  • ## 如何在 Python 中建立不可變物件以及為什麼 nametuple 是最好的方法?
    ## 如何在 Python 中建立不可變物件以及為什麼 nametuple 是最好的方法?
    Python 中的不可變物件在 Python 中,不變性為保護資料完整性提供了一種有價值的機制。然而,創建不可變物件會帶來一定的挑戰。 重寫 setattr常見的方法是重寫 setattr方法。然而,即使在 init 過程中也會呼叫此方法,因此它不適合建立不可變物件。 子類化 Tuple另一種策略涉...
    程式設計 發佈於2024-11-02
  • 最常被問到的 React 面試問題
    最常被問到的 React 面試問題
    如何優化 React 應用程式的效能? 1。組件應謹慎更新 實作 shouldComponentUpdate 或 React.memo 透過比較 props 或 states 來防止不必要的重新渲染。 2.使用功能組件和鉤子 帶鉤子的功能組件通常比類組件性能更高。 3.延遲載入...
    程式設計 發佈於2024-11-02
  • (Wordpress 初學者):僅將子網域從託管轉移(遷移)到另一個新託管。
    (Wordpress 初學者):僅將子網域從託管轉移(遷移)到另一個新託管。
    我只想從 Bluehost 託管轉移(遷移)一個新託管(例如 Fastcomet 或 Chemicloud)的子網域。 我想知道我遷移子網域的步驟是否正確以及我應該做什麼更改 DNS 內容...... ** 我的情況1:** – 主 Web 網域(例如:forcleanworld.com)保留在 ...
    程式設計 發佈於2024-11-02
  • 使用 Java 進行資料分析:資訊處理初學者指南
    使用 Java 進行資料分析:資訊處理初學者指南
    Java 是適用於資料分析的強大語言,它提供用於處理大型資料集和執行複雜分析的基礎結構,包括:資料結構:用於儲存和組織資料的集合,例如陣列和清單。 IO 流:用於讀取和寫入檔案的物件。 Java 集合框架:用於管理和操作資料結構的強大集合類別庫。使用 Java 進行資料分析的實際案例包括分析文字文件...
    程式設計 發佈於2024-11-02
  • 僱用自由 Python 開發人員時要避免的常見錯誤
    僱用自由 Python 開發人員時要避免的常見錯誤
    介紹 聘請合適的自由 Python 開發人員可以決定你的專案的成敗。然而,許多企業在招募過程中會犯一些常見的錯誤,這些錯誤可能會導致招募延遲、成本超支和結果不佳。以下是如何避免這些陷阱並確保專案成功的方法。 沒有明確定義專案要求 最常見的錯誤之一是在開始招募流程之...
    程式設計 發佈於2024-11-02

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3