函数返回超过预期

时间:2017-01-31 16:07:29

标签: javascript

我想在没有创建全局变量的情况下每次调用函数计数时都返回一个数字(1),每次我这样做时,将它递增1.在这个例子中,它应该返回1 2 3,其中它做了,但它也返回

function() {
  x++
  return x;
}

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

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

1 个答案:

答案 0 :(得分:-2)

您可能想要覆盖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

http://jsbin.com/lenigadoqe/edit?console

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