var num;
function newNum(num) {
num += 1;
return num;
}
所以我试图在google工作表中创建一个新功能,其中newNum()
将取任何数字并将其添加到之前的(全局)数字。
即。
newNum(1)
将打印2
newNum(5)
现在会打印7
newNum(3)
现在会打印10
,依此类推。
提前谢谢大家!
答案 0 :(得分:2)
如果您希望每次调用时都将其添加到全局总计中,那么您必须为全局变量和函数参数指定不同的名称,以便每个都可以访问,并且还需要将全局变量初始化为所需的初始值
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);
}
为了更好地封装总数并避免将其暴露为公共全局,您也可以这样做:
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);
}
答案 1 :(得分:0)
我不了解Google表格,但在普通JS中执行此操作的常用方法是使用一个函数,该函数本身会返回一个"关闭"包含总数的变量,而不将该总数视为全局变量:
function makeAccumulator() {
var total = 0;
return function(n) {
total += n;
return total;
}
}
var newNum = makeAccumulator();
通过这个你可以制作多个累加器,每个累加器都会跟踪它们自己的总数:
var newNum2 = makeAccumulator();