JavaScript一个函数,它在每次调用时返回一个变化的值

时间:2014-02-27 01:33:46

标签: javascript function return-value

我正在尝试编写一个函数,当被调用时将返回考虑先前对它的调用。我是JavaScript的新手,所以我只想确保它可以完成。我想将变化的值存储在一个可变变量中。

var formatPrint = function(orig, changed){
    return "Started with "+orig+" now is "+changed; 
}

var adder = function(orig){
        var changed = orig;
        return function(){return printer(orig, (changed+5))};
}

我正在调用函数如下:

var orig10 = adder(10);
orig10();

从10开始的返回现在是15

orig10();

从10开始的返回现在是15

orig10();

从10开始的返回现在是15

应该回来 从10开始的返回现在是15 从10开始的返回现在是20 从10开始的返回现在是25

抱歉,如果我的代码应该输入论坛,我就会遇到问题。我是个笨蛋..感谢你的帮助

2 个答案:

答案 0 :(得分:1)

+=怎么办?

var adder = function(orig){
    var changed = orig;
    return function(){return printer(orig, (changed+=5))};
}

实例:http://jsfiddle.net/3T72G/

答案 1 :(得分:1)

阅读您的问题和评论,似乎您正在尝试创建某种class,您可以使用它来执行某些数学函数,并在请求时格式化特定字符串。如果是这样,那么你可能会想要做这样的事情。

的Javascript

function MyConstructor(orig) {
    this.orig = this.current = orig;
}

MyConstructor.prototype.toString = function () {
    return "Started with " + this.orig + " now is " + this.current;
};

MyConstructor.prototype.add = function (value) {
    this.current += value;

    return this;
};

MyConstructor.prototype.subtract = function (value) {
    this.current -= value;

    return this;
};

MyConstructor.prototype.multiply = function (value) {
    this.current *= value;

    return this;
};

MyConstructor.prototype.divide = function (value) {
    this.current /= value;

    return this;
};

MyConstructor.prototype.mod = function (value) {
    this.current %= value;

    return this;
};

var orig10 = new MyConstructor(10);

console.log(orig10.toString());
orig10.add(5).multiply(5).mod(2);
console.log(orig10.toString());

输出

Started with 10 now is 10
Started with 10 now is 1 

jsFiddle