Javascript 多次调用函数,但第一次它会打印一些奇怪的东西
该函数返回一个数字,每次调用该函数时,该函数返回的数字都比之前的数字高“一”个 此代码的问题是:Javascript 多次调用函数,但第一次它会打印一些奇怪的东西,javascript,Javascript,该函数返回一个数字,每次调用该函数时,该函数返回的数字都比之前的数字高“一”个 此代码的问题是: function counter() { var n = 0; return function counter() { n += 1; return n; } } var count = counter(); console.log('counter() returns: ' + count); console.log('invok
function counter() {
var n = 0;
return function counter() {
n += 1;
return n;
}
}
var count = counter();
console.log('counter() returns: ' + count);
console.log('invoking the function returns: ' + count());
console.log('invoking the function returns: ' + count());
console.log('invoking the function returns: ' + count());
这将打印所打印计数器内部功能的实际代码
函数计数器(){n+=1;返回n;}
而不是0。有没有办法解决这个问题?其他控制台语句正确打印,打印出1 2 3在第一种情况下,您得到的输出是函数定义,因为您通过分配
var count=counter()
将函数返回到变量。您需要像调用count()一样调用count(),以便它执行函数定义
console.log('counter() returns: + count);
如果要打印0
,则需要初始化var n=-1
,因为否则,结果将从1
开始,因为它的值是递增的,然后返回
函数计数器(){
var n=-1;
返回函数计数器(){
n+=1;
返回n;
}
}
变量计数=计数器();
log('counter()返回:'+count());
log('调用函数返回:'+count());
log('调用函数返回:'+count());
log('调用函数返回:'+count())代码>您的代码无法打印0
,因为值在返回之前会递增。如果希望返回的第一个数字是0
,请从-1
开始
函数计数器(){
var n=-1;
返回函数(){
n+=1;
返回n;
};
}
变量计数=计数器();
log('counter()返回:'+count);
log('调用函数返回:'+count());
log('调用函数返回:'+count());
log('调用函数返回:'+count())代码>打印代码是因为调用外部函数时返回内部函数。要修复它,只需调用count()
函数。在该位置打印count
,在其他位置打印count()
。这两者不一样。您没有可以打印0
的代码。这不是什么奇怪的事情,而是函数count
的字符串表示形式。你还指望什么?
console.log('counter() returns: ' + count());