2014-02-27 37 views
0

我正在嘗試編寫一個函數,當調用函數返回時,會考慮先前對它的調用。我是JavaScript新手,所以我只想確保它可以完成。我想將變化的值存儲在一個可變變量中。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

很抱歉,如果我的代碼應該inputed爲我有這樣做的問題論壇。我是一個nooby ..感謝您的幫助提前

回答

1

+=

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

活生生的例子:http://jsfiddle.net/3T72G/

+0

謝謝!它只要我加入就可以工作,現在讓我說我想要做很多事情。 (((改變+ = 5)* 5)%5)。是否有可能做到這一點與平等運營商? – user2461876

+0

好吧,例如,你可以這樣做:'改變+ = 5;改變* = 5;改變%5',但不是,你不能把它合併成一個這樣的語句。如果你只是希望在沒有'+ ='的情況下使用'=',你可以使用詳細的等價物:'changed = changed + 5;',例如 – Markasoftware

+0

另外,歡迎來到SO!如果您發現答案可以回答您的問題,請點擊答案下方的小檢查以選擇答案 – Markasoftware

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

+0

我正在做一個與此非常相似的小提琴。我同意這是一個答案 –

相關問題