有没有办法确定JavaScript函数是否有副作用
Is there a way to determine if a JavaScript function has side effects?
给定一个Javascript函数,是否可以验证该函数没有副作用;即,该函数不会更改在函数范围之外声明的任何变量的值?
你需要为 JavaScript 编写一个效果分析,这将需要 JavaScript 的效果语义。需要考虑的一些事项:
- 代码是否访问具有副作用的基元操作?(例如内存写入、磁盘写入、文件 IO、更新任何全局状态?
- 如果代码确实写入变量,它们是否逃脱了局部范围?(即它是在 ST 还是 IO monad 中?
- 是否通过共享变量进行任何通信?
人们为不纯语言编写了类型系统,以静态地确定是否存在副作用。Ben Lippmeier的论文涵盖了很多领域。
如果它访问函数中未定义的任何变量,是的,它当然会影响任何可能具有相同名称的全局变量。
您可以查看 JSLint 和 ADSafe,并针对这些工具运行您的文件。
http://www.jslint.com/
http://www.adsafe.org/
呵呵。
相关文章:
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 如何检查这个代码点火器php函数是否工作,该函数是否在ajax url中使用
- 如何检查函数是否将运行或可用
- JavaScript尾部调用中的函数是否经过优化
- 当提供函数名称时,检查函数是否存在于同一作用域中
- 是否可以测试javascript函数是否是构造函数
- JavaScript-确定数学函数是否为无穷大
- jQuery-有没有一种方法可以测试函数是否异步
- 作用域问题-此函数是否形成闭包-JavaScript
- 如何检查该函数是否从外部js文件调用
- 什么更快?运行空函数或检查函数是否未定义
- 箭头函数是否像命名函数一样进行了优化
- JavaScript setInterval函数:是否存在错误
- 如何判断被调用的函数是否源自javascript中的点击事件
- jquery remove函数是否也删除了敲除绑定
- 如何使用jsoup检测内联js函数?我基本上想检查内联函数是否存在
- 当执行进入页面时,JavaScript history.back()函数是否生成HttpRequest
- 在动态更改数据之后(在ajax调用之后)检查函数是否存在
- 检查函数是否属于javascript中的function类型
- 从对象中调用的函数是否可以访问该对象的作用域