javascript足跡

1763 ワード

忙しくなると、どんな技術も文章を書くのがおっくうになります.もっとも大きな嘘は「i will remember i t、i don't need to write it don」です.
はい、何か記録しましょう.散らかっていますが、キラキラした豆知識です.
1、IE 8の前に鞄を閉じて慎重に慎重にまた慎重に!多くの文章では、クローズドの原理が語られていますが、内部関数で使われていない外部作用域変数がごみによって回収されたかどうかは、これまで深く調べられていません.以下のコード
!function (){
    var big1=123,
          big2="";
    
        ~function(){
             alert(big1);
        }();
}();
ビッグ1は包装を閉じているので、ゴミ回収器に回収されないことは間違いないです.ビッグ2は?クローズドの原理を理解すると、クローズドとは、内部関数のscopeチェーンが外部関数のスコープ上の活動対象を引用しているためであり、内部関数が外部関数の局所変数を直接参照することができ、これらの局所変数が参照されているので、彼らは迷惑回収されない.この定義からbig 2は解放されない(big 2だけでなく外部関数の全ての局所変数は回収されない).はい、そしてIE 8-とoperaは全部本当です.これは合理的ですか?明らかに不合理です.Googleとフォックスのゴミ回収メカニズムを最適化しました.参照されていないことを実証したクローズド変数は、まだリリースされます.IE 9も始めてもいいです.
いずれにしても、クローズドを使う時は慎重に.一部のオーバーヘッドの大きな変数は直ちにセットnullでゴミ回収器の回収を促すべきです.
 2、正規表現のexecはコンテキスト関連です.実行するたびに前回の結果に基づいて検索を続けます.気をつけないと困ってしまいます.本来なら正しいのですが、結果は試してみました.結果nullはリセットされていないからです.
       つまりexecの前回の検索位置のindexは、正規のオブジェクトに保存されているexec()の文字列とは無関係です.2回目のexec()を実行すると、文字列が変わっても前回のマッチ列の後ろの位置から検索を開始します.
  以下の例はすべてを説明することができる.
var r=/ab/g
console.log(r.exec('abc'));
console.log(r.exec('abd'));
var r2=/ab/g
console.log(r2.exec('abc'));
console.log(r2.exec('abcab'));
  注:FFの下にはこの問題がないようです.
 
3、trimによる思慮不全の教訓
4、jquery ajaxはerrorコールを処理しなければなりません.特別な要求がないなら、getを覚えてください.postは中国語でコードしません.バックグラウンドはトランスコードの設定が不要です.