Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 多次调用函数,但第一次它会打印一些奇怪的东西_Javascript - Fatal编程技术网

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());