Javascript 有什么方法可以检查函数是否有外部副作用(或强制它不会';t)?

Javascript 有什么方法可以检查函数是否有外部副作用(或强制它不会';t)?,javascript,functional-programming,constants,immutability,Javascript,Functional Programming,Constants,Immutability,我对Javascript框架很感兴趣,比如,它提供了一个并行编程抽象,但只有当您传递来完成工作的函数已经完成时,才提供定义良好的语义 我想知道是否有任何方法可以写一个检查,检查传入的函数是否没有副作用?或者对函数隐藏环境中的所有内容(以便它没有任何可修改的内容)?或者临时声明环境中的所有内容为“const”(但仅限于函数定义的范围?)(或者任何其他疯狂的想法,这些想法会让我产生在gcc中简单声明\uuuuuuu属性((pure))) 并行编程是“纯”函数式编程真正发挥作用的地方之一。如果没有纯函

我对Javascript框架很感兴趣,比如,它提供了一个并行编程抽象,但只有当您传递来完成工作的函数已经完成时,才提供定义良好的语义

我想知道是否有任何方法可以写一个检查,检查传入的函数是否没有副作用?或者对函数隐藏环境中的所有内容(以便它没有任何可修改的内容)?或者临时声明环境中的所有内容为“const”(但仅限于函数定义的范围?)(或者任何其他疯狂的想法,这些想法会让我产生在gcc中简单声明
\uuuuuuu属性((pure))

并行编程是“纯”函数式编程真正发挥作用的地方之一。如果没有纯函数,为并行程序定义合理的语义就变得非常困难(检查C++的语义,在那里它们必须定义数据竞争是什么,以便它们能够声明任何一个程序都是未定义的)。 我可以想象,如果可能的话,在其他地方,人们可能会觉得这很有用。例如,允许网页用户传入保证纯无副作用的Javascript函数,以检查查询过程中的某些条件,这可能很有用

写一个检查,确认传入函数没有副作用

这是一种类型检查

由于Javascript没有类型和效果系统,因此任何检测副作用的方法都必须是近似的,并且依赖于启发式。对于Javascript,通常没有办法做到这一点