暂态存储
动态联合的设计基于函数式编程的原则,因此基本不存在记录状态的手段,除非使用延迟器等外部方式绕过这一限制。
JavaScript语言允许混用函数式编程和命令式编程,这一特性便可用于临时记录状态。
具体说来,如果在函数外部声明了可变变量(比如说用了let),该变量就可通过后续函数调用而修改。
基于这些暂态变量,可以做到统计函数调用次数、实时统计一系列值的平均数等工作。
需要强调的是,这些变量是暂态的而非持久的;具体而言,其值会随着重新插拔变量卡和重启服务器而重置。
因此,这些值无法保证能永久存在。如果需要持久的数据存储方式,最好还是使用延迟器。
let state = 0;
function getAndIncr(value) {
return state += value;
}
function getAndIncr(value) {
return state += value;
}
let sum = 0;
let amount = 0;
function getRunningAvg(value) {
amount++;
sum += value;
return sum / amount;
}
let amount = 0;
function getRunningAvg(value) {
amount++;
sum += value;
return sum / amount;
}