[英]How much memory does a JavaScript declared function consume on script loading?
我最近(在codeschool )上過一些JavaScript課程,其中之一是,他們說:
因此,相對於fd,fe具有優勢,后者在加載時節省了一些內存 -我得出結論。
因此,例如,考慮下面的兩個片段代碼,加載時將不會有任何額外的內存分配,因為由於提升,會將foo
分配給undefined
。
// Original code
var foo = function (bar) {
console.log(bar);
};
下面是吊裝后的代碼
// Code after hoisting
var foo = undefined;
foo = function (bar) {
console.log(bar);
};
簡而言之, foo
是undefined
並且僅在代碼運行后才將函數表達式分配給foo
。 因此,它不會在加載時分配額外的內存。
好。 到現在沒有問題。 但是,“ 如果fe比fd有優勢,那就是在加載時節省了一些內存 ”,下面的代碼應該在加載時分配一些額外的內存,因為它是函數聲明。
function foo(bar) {
console.log(bar);
}
所以問題是:我的推理對嗎? 如果是這樣,加載時需要占用多少內存,以及如何計算?
是的,您是對的,因為所有函數聲明都懸掛在頂部,並且(通常)是在現場編譯的。 通常在運行時才編譯函數表達式,因為它們可能會或根本不會使用:
var f;
if (condition) {
f = function() { ... };
}
// f could be undefined
至於需要多少內存,取決於引擎的實現。 他們如何存儲:
一切都取決於發動機的內部設計。 您可以通過在創建函數之前和之后執行堆轉儲來執行一些測試,但是實際數量會隨着添加和刪除優化而有所不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.