2016-03-21 15 views
0
var num; 

function newNum(num) { 
    num += 1; 
    return num; 
} 

だから私はnewNum()は、任意の数をとり、前の(グローバル)NUMに追加しますここでのGoogleスプレッドシートで新しい機能を作成しようとしています。JavaScriptのグローバルadd関数

つまり newNum(1)は、2を印刷します。
newNum(5)は、7と表示されるようになりました。
newNum(3)10などと印刷されます。

ありがとうございます!

+0

正式なグローバルではありません。 – dandavis

答えて

2

コールするたびにグローバル合計に追加したい場合は、グローバル変数と関数の引数に異なる名前を付けて、それぞれにアクセスできるようにする必要があります。また、グローバルを初期化する必要があります値。

var newNum = (function() { 
 
    var num = 1; 
 

 
    return function(add) { 
 
     num += add; 
 
     return num; 
 
    } 
 
})(); 
 

 
log(newNum(1)); 
 
log(newNum(5)); 
 
log(newNum(3)); 
 

 
// log output in the snippet 
 
function log(x) { 
 
    var div = document.createElement("div"); 
 
    div.innerHTML = x; 
 
    document.body.appendChild(div); 
 
}

0

var num = 1; 
 

 
function newNum(add) { 
 
    num += add; 
 
    return num; 
 
} 
 

 
log(newNum(1)); 
 
log(newNum(5)); 
 
log(newNum(3)); 
 

 
// log output in the snippet 
 
function log(x) { 
 
    var div = document.createElement("div"); 
 
    div.innerHTML = x; 
 
    document.body.appendChild(div); 
 
}

公共グローバルとして公開から合計が少し良くしておくカプセル化することは、あなたも、このようにそれを行うことができます

Googleスプレッドシートについてはわかりませんが、通常のJSでこれを行う通常の方法はそれぞれが、これにより

function makeAccumulator() { 
    var total = 0; 
    return function(n) { 
     total += n; 
     return total; 
    } 
} 

var newNum = makeAccumulator(); 

あなたが複数のアキュムレータを行うことができます自体がグローバル変数として合計見えるがいることをせずに、合計を保持する変数「の上に閉じ」される関数を返すという機能を使用するには

var newNum2 = makeAccumulator(); 
関連する問題