【发布时间】:2011-07-21 14:14:07
【问题描述】:
当我执行以下操作时:
function makeAddFunction(amount) {
function add(number) {
return number + amount;
}
return add;
}
var addTwo = makeAddFunction(2);
var addFive = makeAddFunction(5);
alert(addTwo(1) + addFive(1));
makeAddFunction 的每个实例是否都有单独的堆栈,或者它们都将使用相同的堆栈?变量进出栈的顺序重要吗?
【问题讨论】:
-
只有一个
makeAddFunction...??你的意思是每次调用它? -
@sje397 这不是两个不同的实例吗?那么它们如何保存同一个变量的 2 个不同值呢?
-
有两个名为
add的函数实例,它们是从对makeAddFunction的单个实例的调用中返回的,变量存储对它们的引用。 -
@sje397 Thanx,那么如果我想创建两个
makeAddFunction实例会有什么区别?我应该只添加new吗? -
您可以创建两个名为
makeAddFunction的函数实例,就像在上面的代码中为add所做的那样。添加new会将makeAddFunction视为构造函数,其中函数内部的this是makeAddFunction类型的新对象。
标签: javascript stack