4

Javascript関数が与えられた場合、その関数に副作用がないことを確認することは可能ですか。つまり、関数は、関数のスコープ外で宣言された変数の値を変更しませんか?

4

2 に答える 2

4

JavaScriptの効果分析を作成する必要があります。これには、JavaScriptの効果セマンティクスが必要です。考慮すべき点のいくつか:

  • コードは副作用のあるプリミティブ操作にアクセスしますか?(例:メモリ書き込み、ディスク書き込み、ファイルIO、グローバル状態の更新?)
  • コードが実際に変数に書き込む場合、それらはローカルスコープをエスケープしますか?(つまり、STまたはIOモナドにありますか?)
  • 共有変数を介して行われる通信はありますか?

人々は、副作用が存在するかどうかを静的に判断するために、不純な言語の型システムを作成しました。ベン・リップマイヤーの論文は多くの分野をカバーしています。

于 2012-05-19T05:29:00.987 に答える
-1

関数yes内で定義されていない変数にアクセスする場合は、もちろん、同じ名前を持つ可能性のあるグローバル変数に影響します。

JSLintとADSafeを調べて、これらのツールに対してファイルを実行できます。

http://www.jslint.com/

http://www.adsafe.org/

HTH。

于 2012-05-19T05:16:20.087 に答える