Integrated Dynamics - On the Dynamics of Integration

暂态存储

动态联合的设计基于函数式编程的原则,因此基本不存在记录状态的手段,除非使用延迟器等外部方式绕过这一限制。

JavaScript语言允许混用函数式编程和命令式编程,这一特性便可用于临时记录状态。

具体说来,如果在函数外部声明了可变变量(比如说用了let),该变量就可通过后续函数调用而修改。

基于这些暂态变量,可以做到统计函数调用次数、实时统计一系列值的平均数等工作。

需要强调的是,这些变量是暂态的而非持久的;具体而言,其值会随着重新插拔变量卡和重启服务器而重置。

因此,这些值无法保证能永久存在。如果需要持久的数据存储方式,最好还是使用延迟器

let state = 0;
function getAndIncr(value) {
  return state += value;
}
let sum = 0;
let amount = 0;
function getRunningAvg(value) {
  amount++;
  sum += value;
  return sum / amount;
}