回答

3

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

  • 是否有副作用的代码访问原语操作? (例如,内存写入,磁盘写入,文件IO,更新任何全局状态?)
  • 如果代码确实写入变量,它们是否会转义本地作用域? (即它是在ST还是IO单子?)
  • 是通过共享变量完成的任何通信吗?

人们已经为不纯语言编写了类型系统来静态确定副作用是否存在。 Ben Lippmeier's thesis涵盖了很多地面。

0

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

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

http://www.jslint.com/

http://www.adsafe.org/

HTH。

+0

这些工具中的任何一种都测试副作用还是提供有关功能是否有副作用的信息? –

+0

@AndersonGreen你能否详细说明副作用? JSLint测试JavaScript是否正确编写,而ADSafe检查它是否可以嵌入到包含广告的页面中,这样就不会使用全局变量等,因为它们可能会妨碍广告。 – g13n

相关问题