Javascript 函数属性示例说明
我正在学习JS教程,遇到了以下示例:Javascript 函数属性示例说明,javascript,Javascript,我正在学习JS教程,遇到了以下示例: function makeCounter() { function counter() { return counter.count++; }; counter.count = 0; return counter; } let counter = makeCounter(); counter.count = 10; console.log(counter()) // logs 10 我不明白的是为什么它没有记录11而不是10?如
function makeCounter() {
function counter() {
return counter.count++;
};
counter.count = 0;
return counter;
}
let counter = makeCounter();
counter.count = 10;
console.log(counter()) // logs 10
我不明白的是为什么它没有记录11而不是10?如果我们将
count
属性设置为10
,并存储了增加count
属性的函数计数器
,那么为什么该属性不增加到11 您很了解函数属性。这与++
的工作方式有关
return counter.count++
将返回计数器。按当前值计数,然后递增,而不是相反。因为您使用的是后缀递增运算符,它首先返回当前值,然后递增。您可以将其更改为前缀增加:
return ++counter.count;
您的函数makeCounter
正在返回一个函数,该函数可以访问[[scope]]]
。它正在使用闭包
。很明显,它是这样工作的
闭包:“当函数从调用它的地方记忆数据时”
进一步资料 计数器.count
打印11
计数器()
将记录10
,但计数器.count
将记录11
。++
增量发生在返回值之后。如果您以前想要它,您可以编写return++counter.count
。非常感谢,我不知道它这么简单。我想您错过了实际问题。