【发布时间】:2016-01-22 19:30:05
【问题描述】:
我最近参加了一些 JavaScript 课程(codeschool),在其中一门课程中,他们说:
- 函数声明 (fd) 在程序加载时立即在内存中构建;
- 函数表达式 (fe) 在执行期间动态构建在内存中。
因此 fe 比 fd 有一个优势,即 在加载时节省一些内存 - 我总结道。
因此,例如,考虑以下两个截断的代码,在加载时不会有任何额外的内存分配,因为由于提升,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);
}
所以问题是:我的推理是否正确?如果有,加载时需要多少内存,如何计算?
【问题讨论】:
标签: javascript memory memory-management