背景: 私はC ++の独学の趣味レベルの理解を持っており、これはjavascriptの同様の理解に変換されています。javascriptをよりよく理解するために、Googleが同じドメインからの複数の結果を処理する方法の問題を解決するGreasemonkeyスクリプトを作成することにしました。
スクリプトを書いたのですが、驚くほど簡単でした。このスクリプトは他の人にも役立つと思うので、リリースしたいと思います。ただし、その前に、無責任なコードをリリースしていないことを確認したいと思います。
拡張機能の問題としてガベージコレクションが不十分であることがよくあることを知っており、それを防ぐためにjavascriptで何をする必要があるかについて調査しました。答えは、関数にラップされているメモリは、その関数が終了したときに再利用されるということのようです。これは、私が見たいくつかの人気のあるスクリプトが、他の方法では役に立たない関数にラップされた理由を説明しているようです。
これは私をこれらの質問に導きます:
- 基本的なJavaScript関数を使用して、メモリがリークしないようにするにはどうすればよいですか?
これは、私が多くのスクリプトで見た答えです。
(function(){ //code goes here })();
上記のコードで、最初の括弧の目的は何ですか?それは私には冗長に思えます。
その行を理解しようとしていたときに、次のように書き直しました。
(function main(){ //code goes here }) main();
これは、以前は名前が付けられていなかった関数を呼び出すだけであるという考えです。しかし、これはうまくいきませんでした、なぜですか?
私は一般的な答えにもっと興味があります、しかしそれが必要な場合のためにここに私の現在のコードがあります:http: //pastebin.com/qQWKfnJT