首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有什么链接可以警告JavaScript的副作用吗?

有什么链接可以警告JavaScript的副作用吗?
EN

Stack Overflow用户
提问于 2017-02-03 12:08:19
回答 3查看 1.1K关注 0票数 7

有了JavaScript的灵活性,我们可以编写充满副作用的代码,或者仅仅是纯功能性的代码。

我对函数式JavaScript很感兴趣,并希望在这个范例中开始一个项目。对此一针见血肯定能帮助我收集好的实践经验。是否有任何链接来执行纯功能和副作用的自由风格?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-02-03 12:16:52

纯分析相当于解决停止问题,因此,在一般情况下,任何能够确定代码是纯还是不纯的静态分析都是不可能的。无论是否纯粹,总是有无限多的程序是无法判定的;其中有些程序是纯洁的,有些是不纯的。

现在,您故意使用了术语" linter“,而不是静态分析器(当然,linter只是一个静态分析器),这似乎意味着您对大致的启发式结果很满意。您可以拥有一个linter,它有时会告诉您您的代码是纯的,有时告诉您您的代码是不纯的,而大多数时候告诉您,它无法决定您的代码是纯的还是不纯的。您可以拥有已知为纯操作的白名单(例如,使用+运算符添加两个+),以及已知不纯操作的黑名单(例如,任何可以抛出异常的操作、任何类型的循环、if语句、Array.prototype.forEach),并对这些操作进行启发式扫描。

但最终,结果将太不可靠,无法采取任何严肃的行动。

票数 3
EN

Stack Overflow用户

发布于 2017-02-03 12:14:39

我自己也没有用过这个插件,但是我找到了ESLint:https://github.com/jfmengels/eslint-plugin-fp的插件

票数 2
EN

Stack Overflow用户

发布于 2017-02-03 13:11:49

您不能完全使用JS而不产生副作用。每个DOM访问都是一个副作用,我们可以有一个论点--整个全局命名空间也可能属于该定义的范围。

你能做的就是保持理智。我把它逻辑上分成两组:

  • 工作马(实用程序):他们的目的是获取一些数据并以某种方式进行处理。这些(大部分)副作用是免费的。大多数情况下,因为这些函数需要某种状态,比如计数器或缓存,所以可以认为wich是一个副作用,但是由于这些函数是孤立的/封闭的,所以我并不在乎。 比如传递给Array#map()或承诺then()的函数,以及类似的地方。
  • 管理:这些函数很少单独进行一些数据处理,它们主要安排数据流,从创建数据流到必须运行的任何处理(-utilities),直到它结束的地方,比如修改DOM或修改对象。 var someList.filter(theOnesINeed).map(intoADifferentFormat);theOnesINeed = someOtherList.filter( theOtherOnesINeed );var theOnesINeed=a.concat(B).map(包装(‘’,‘’);

这样所有的函数都尽可能的简短和简单。不要害怕描述性的名字(不像一般名称那样:)

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

https://stackoverflow.com/questions/42023962

复制
相关文章

相似问题

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