Javascript 函数返回的值超出预期值

Javascript 函数返回的值超出预期值,javascript,Javascript,我希望在不创建全局变量的情况下,每次调用函数count时都返回一个数字(1),每次都将其递增1。在这个例子中,它应该返回123,它确实返回了,但它也返回了 function() { x++ return x; } 函数计数器(){ var x=0; 返回函数(){ x++ 返回x; } } 变量计数=计数器(); log('counter()返回:'+count); log('调用函数返回:'+count()); log('调用函数返回:'+count()); log('调用函数返回

我希望在不创建全局变量的情况下,每次调用函数count时都返回一个数字(1),每次都将其递增1。在这个例子中,它应该返回123,它确实返回了,但它也返回了

function() {
  x++
  return x;
}
函数计数器(){
var x=0;
返回函数(){
x++
返回x;
}
}
变量计数=计数器();
log('counter()返回:'+count);
log('调用函数返回:'+count());
log('调用函数返回:'+count());

log('调用函数返回:'+count())您可能希望覆盖toString方法:

function counter() {
 var x = 0;
  function internal() {
    x++
   return x;
 }
internal.toString=function(){return internal().toString()};
return internal;
};

console.log(counter());//1
var count=counter();
console.log(count);//1
console.log(count);//2


无论何时尝试将函数输出为字符串,无论是通过记录它还是通过计数+“”,这都是有效的。但是,这并不总是如此,因此您可以查看getter/setter。

是的,如果您试图打印一个函数而不调用它,它(通常)会显示函数本身的代码。您希望第一个console.log行打印什么?您希望
count
在每次提及时神奇地返回一个新号码,而不必使用
()
调用它?您已经创建了一个全局变量
var count
,这是我的错,我的意思是用来增加的值不能是global@downvoters:抱歉,误解了问题,请参阅editProblem:不能保证返回值总是在字符串上下文中使用;这在这个特定的演示中起作用,但是关于
arr.push(count)
或其他用途呢?