【发布时间】:2019-09-26 04:02:55
【问题描述】:
我的目的是创建一个安全计数器并通过调用函数来重置它。我试过这段代码:
function ZeroCounter () { var c = 0 ; return function() { return ++c } };
const Counter = ZeroCounter();
但没有像我预期的那样工作。 ZeroCounter 不会重置 var C。我注意到function() return 创建了一个新对象。
var m = ZeroCounter(); var n = ZeroCounter();
m === n //return false
我尝试了 ZeroCounter 的新代码。
function ZeroCounter () { var c = 0 ; ret = function() { return ++c }; return ret };
事实上,没有理由产生新的结果。那么,我能做些什么来达到我的目的:创建一个可重置的嵌套变量?还是这样不行?
【问题讨论】:
-
你想重置计数器的部分在哪里?
-
不清楚你的问题是什么。使用此代码
var m = ZeroCounter(),对m的连续调用将产生1、2等。如果您希望能够重置计数,您需要返回一个具有2 个方法的对象,一个是递增的,一个是递增的。一个要重置。 -
c在您调用ZeroCounter()时始终为0并且ZeroCounter()返回另一个函数。所以要调用嵌套函数,你必须ZeroCounter()()。这就是你要找的吗? -
这个想法是重置一个计数器,就问题而言,将 0 放入
var c。调用 ZeroCounter 会生成c = 0,但似乎会创建一个新计数器(保持实际计数器var Counter不变。)。当被问到 m === n 时,答案是不相等,它们是由同一个函数创建的不同计数器。
标签: javascript counter nested-function