回答

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

相關問題