Javascript 计数器函数的设定值
以下代码将允许计数器函数每次递增一个计数器();被称为Javascript 计数器函数的设定值,javascript,Javascript,以下代码将允许计数器函数每次递增一个计数器();被称为 function One() { var counter = function(initial) { var c = initial || 0; return function() { return c++; }; }(0); Too(counter); } function Too(counterArg) { counter();
function One() {
var counter = function(initial) {
var c = initial || 0;
return function() {
return c++;
};
}(0);
Too(counter);
}
function Too(counterArg) {
counter();
}
有什么我可以替换的吗;有了它,计数器会变小吗?或者更好的是,我有没有办法设置计数器的值?比如计数器=0或计数器=20?我还需要远离全局变量 您可以在javascript中将函数指定为变量,所以现在您可以这样做了
var counter = 0;
var step = 1; // or 20 or whatever
var method = null;
function increment () {
counter += step;
}
function decrement () {
counter -= step;
}
method = icrement;
method();
您可以在javascript中将函数指定为变量,所以现在您可以这样做
var counter = 0;
var step = 1; // or 20 or whatever
var method = null;
function increment () {
counter += step;
}
function decrement () {
counter -= step;
}
method = icrement;
method();
您可以在javascript中将函数指定为变量,所以现在您可以这样做
var counter = 0;
var step = 1; // or 20 or whatever
var method = null;
function increment () {
counter += step;
}
function decrement () {
counter -= step;
}
method = icrement;
method();
您可以在javascript中将函数指定为变量,所以现在您可以这样做
var counter = 0;
var step = 1; // or 20 or whatever
var method = null;
function increment () {
counter += step;
}
function decrement () {
counter -= step;
}
method = icrement;
method();
首先,代码中有一个小的输入错误;你大概是说
function Too(counterArg) {
counterArg(); // this was just `counter` originally; that will be undefined
}
其次,c++
是一种有点奇怪的计数器方式,因为它返回c
,然后递增c
,所以计数器将从0开始,这可能不是您想要的。
(我承认,每当我看到代码中的C++时,我会咯咯笑。
好的,关于主要问题:我将通过向计数器函数添加一个方法来实现,该函数名为,例如,set
function One() {
var counter = function createCounter(initial) {
var c = initial || 0;
function counter() {
return ++c;
}
counter.set = function(n) {
c = n;
};
return counter;
}(0);
Too(counter);
}
function Too(counterArg) {
counter(); // 1
counter.set(20); // `c` is now 20
counter(); // 21
counter(); // 22
}
这是因为
计数器
函数创建了所谓的闭包。这在JavaScript中是一个相当常见的概念,关于闭包有很多很好的问题和答案,所以如果您不知道这个概念,您应该看看。基本上,即使在匿名函数(我重命名为createCounter
)返回后,变量c
仍然存在,并且可以从createCounter
中的任何代码访问。这就是计数器
功能的工作原理<但是,code>c不能被createCounter
之外的任何代码访问,因此如果您想使用它做任何事情,必须将该代码放入createCounter
中。这就是我添加的计数器.set
方法的作用。由于它位于createCounter
中,因此可以自由修改c
,首先,您的代码中有一个小的输入错误;你大概是说
function Too(counterArg) {
counterArg(); // this was just `counter` originally; that will be undefined
}
其次,c++
是一种有点奇怪的计数器方式,因为它返回c
,然后递增c
,所以计数器将从0开始,这可能不是您想要的。
(我承认,每当我看到代码中的C++时,我会咯咯笑。
好的,关于主要问题:我将通过向计数器函数添加一个方法来实现,该函数名为,例如,set
function One() {
var counter = function createCounter(initial) {
var c = initial || 0;
function counter() {
return ++c;
}
counter.set = function(n) {
c = n;
};
return counter;
}(0);
Too(counter);
}
function Too(counterArg) {
counter(); // 1
counter.set(20); // `c` is now 20
counter(); // 21
counter(); // 22
}
这是因为
计数器
函数创建了所谓的闭包。这在JavaScript中是一个相当常见的概念,关于闭包有很多很好的问题和答案,所以如果您不知道这个概念,您应该看看。基本上,即使在匿名函数(我重命名为createCounter
)返回后,变量c
仍然存在,并且可以从createCounter
中的任何代码访问。这就是计数器
功能的工作原理<但是,code>c不能被createCounter
之外的任何代码访问,因此如果您想使用它做任何事情,必须将该代码放入createCounter
中。这就是我添加的计数器.set
方法的作用。由于它位于createCounter
中,因此可以自由修改c
,首先,您的代码中有一个小的输入错误;你大概是说
function Too(counterArg) {
counterArg(); // this was just `counter` originally; that will be undefined
}
其次,c++
是一种有点奇怪的计数器方式,因为它返回c
,然后递增c
,所以计数器将从0开始,这可能不是您想要的。
(我承认,每当我看到代码中的C++时,我会咯咯笑。
好的,关于主要问题:我将通过向计数器函数添加一个方法来实现,该函数名为,例如,set
function One() {
var counter = function createCounter(initial) {
var c = initial || 0;
function counter() {
return ++c;
}
counter.set = function(n) {
c = n;
};
return counter;
}(0);
Too(counter);
}
function Too(counterArg) {
counter(); // 1
counter.set(20); // `c` is now 20
counter(); // 21
counter(); // 22
}
这是因为
计数器
函数创建了所谓的闭包。这在JavaScript中是一个相当常见的概念,关于闭包有很多很好的问题和答案,所以如果您不知道这个概念,您应该看看。基本上,即使在匿名函数(我重命名为createCounter
)返回后,变量c
仍然存在,并且可以从createCounter
中的任何代码访问。这就是计数器
功能的工作原理<但是,code>c不能被createCounter
之外的任何代码访问,因此如果您想使用它做任何事情,必须将该代码放入createCounter
中。这就是我添加的计数器.set
方法的作用。由于它位于createCounter
中,因此可以自由修改c
,首先,您的代码中有一个小的输入错误;你大概是说
function Too(counterArg) {
counterArg(); // this was just `counter` originally; that will be undefined
}
其次,c++
是一种有点奇怪的计数器方式,因为它返回c
,然后递增c
,所以计数器将从0开始,这可能不是您想要的。
(我承认,每当我看到代码中的C++时,我会咯咯笑。
好的,关于主要问题:我将通过向计数器函数添加一个方法来实现,该函数名为,例如,set
function One() {
var counter = function createCounter(initial) {
var c = initial || 0;
function counter() {
return ++c;
}
counter.set = function(n) {
c = n;
};
return counter;
}(0);
Too(counter);
}
function Too(counterArg) {
counter(); // 1
counter.set(20); // `c` is now 20
counter(); // 21
counter(); // 22
}
这是因为计数器
函数创建了所谓的闭包。这在JavaScript中是一个相当常见的概念,关于闭包有很多很好的问题和答案,所以如果您不知道这个概念,您应该看看。基本上,即使在匿名函数(我重命名为createCounter
)返回后,变量c
仍然存在,并且可以从createCounter
中的任何代码访问。这就是计数器
功能的工作原理<但是,code>c不能被createCounter
之外的任何代码访问,因此如果您想使用它做任何事情,必须将该代码放入createCounter
中。这就是我添加的计数器.set
方法的作用。因为它在cr范围内