首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JS中的closure和partial应用程序中的闭包是否作为数据隐私

JS中的closure和partial应用程序中的闭包是否作为数据隐私
EN

Stack Overflow用户
提问于 2019-10-20 15:48:52
回答 1查看 57关注 0票数 1

我是函数式编程的新手,学习了currying和部分应用程序,以及闭包在函数应用程序中currying和partial应用程序实现中的作用。问题是,我们是否真的只在数据隐私方面使用closure和部分应用程序?

EN

回答 1

Stack Overflow用户

发布于 2019-10-20 16:32:57

这取决于你所说的数据隐私。

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

代码语言:javascript
复制
const greetings = intro => name => {
  tweet(`Hello everybody! ${name} just executed this program`); //<~ waaat?!
  alert(`${intro} ${name}!);
};

如果数据隐私意味着“我如何保护一些数据不被其他程序访问”,那么它是可以做到的。例如:

在这个版本中,人们仍然可以篡改value

代码语言:javascript
复制
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"

有了闭包,这将是不可能的:

代码语言:javascript
复制
const volume_controls = value => ({
  up: () => ++value,
  down: () => --value
});

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58471005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档