更快的陣列初始化:[] vs new Array()
問題:為什麼要用[] 來初始化陣列比使用new Array() 執行得更快?
答案:
除了之前的回答,讓我們從編譯器的角度來檢查一下:
-
標記化:
- []:表示陣列初始化(例如arr = [];)。
- new Array:表示多個標記函數呼叫(例如 var arr = new Array();)。
-
物件建立:
- [] :直接導致陣列建立。
- new Array:需要呼叫建構子、檢查參數,並可能執行其他型別檢查。
-
函數呼叫:
- []:無函數呼叫開銷。
- new Array:呼叫建構函數,通常比直接建立物件慢。
-
歧義:
- []:明確指示數組初始化。
- 新陣列:需要 JavaScript VM 來確定特定操作(例如,新關鍵字、陣列識別碼)。
-
重載:
- []:始終建立array.
- new Array:根據提供的參數數量,可以有不同的行為。這進一步增加了物件創建過程中的複雜性和開銷。
總之,使用 [] 進行數組初始化速度更快,因為它跳過了所需的額外處理、函數調用和歧義解析通過新數組。編譯器可以直接建立數組,而不需要虛擬機器來執行這些額外的步驟。
以上是為什麼使用 [] 初始化陣列比 new Array() 更快?的詳細內容。更多資訊請關注PHP中文網其他相關文章!