繁体   English   中英

闭包是否在 JS 中的柯里化和部分应用中起到数据隐私的作用

[英]Does closure serve as data privacy in currying and partial application in JS

我是函数式编程的新手,正在学习柯里化和部分应用以及闭包在函数式应用中的柯里化和部分应用的实现中的作用。 问题是我们在柯里化和部分应用程序中使用闭包是否仅作为数据隐私?

这篇文章真的会让你了解柯里化和部分应用程序: https://medium.com/javascript-scene/curry-or-partial-application-8150044c78b8

这取决于您所说的数据隐私是什么意思。

如果数据隐私意味着“确保您的用户隐私安全”,那么不会。 闭包允许创建柯里化函数,但人们仍然可以做一些愚蠢的事情:

const greetings = intro => name => {
  tweet(`Hello everybody! ${name} just executed this program`); //<~ waaat?!
  alert(`${intro} ${name}!);
};

如果数据隐私意味着“我怎样才能保护某些数据不受其他程序的影响”,那么它可以做到。 例如

有了这个版本,人们仍然可以篡改value

function volume_controls(value) {
  this.value = value;
}
volume_controls.prototype.up = function () {
  this.value = this.value + 1;
};
volume_controls.prototype.down = function () {
  this.value = this.value - 1;
};

var ctrl = new volume_controls(10);
ctrl.up(); //=> 11
ctrl.value = "boom";
ctrl.up(); //=> "boom1"

如果关闭,这是不可能的:

const volume_controls = value => ({
  up: () => ++value,
  down: () => --value
});

const ctrl = volume_controls(10);
ctrl.up(); //=> 11
ctrl.value = "boom"
ctrl.up(); //=> 12

尽管从函数式编程的角度来看,篡改参数并不好。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM