繁体   English   中英

有没有办法确定JavaScript函数是否有副作用? [关闭]

[英]Is there a way to determine if a JavaScript function has side effects? [closed]

给定Javascript函数,是否可以验证函数没有副作用; 即,该函数不会更改在函数范围之外声明的任何变量的值?

您需要为JavaScript编写效果分析,这需要JavaScript的效果语义。 一些要考虑的事情:

  • 代码访问具有副作用的原始操作吗? (例如,内存写入,磁盘写入,文件IO,更新任何全局状态?)
  • 如果代码确实写入变量,它们是否会逃避局部范围? (即它是在ST或IO monad?)
  • 是通过共享变量完成的任何通信?

人们已经为不纯语言编写了类型系统,以静态确定是否存在副作用。 Ben Lippmeier的论文涵盖了很多方面。

如果它访问函数中未定义的任何变量,当然它会影响任何可能具有相同名称的全局变量。

您可以查看JSLint和ADSafe并根据这些工具运行您的文件。

http://www.jslint.com/

http://www.adsafe.org/

HTH。

暂无
暂无

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

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