Javascriptの美しさを体験する第5課

4001 ワード

Javascriptの美しさを体験する-第5課匿名関数の自己実行と閉パッケージは同じことですか?
このレッスンでは、次のことを学びます.
1.関数式と関数宣言とは
2.first-class function
3.参照とコピーの違い
4.関数伝参とはどういうことか
5.関数のthisとargumentsについて
6.匿名関数の自己実行と実際のライブラリへの適用方法
[原句]かばんを閉じるのはどういうことですか.
8.閉パッケージの原理とjqueryでの応用
9.一から面接問題まで徹底的に閉包とゴミ回収メカニズムを理解する
10.コールバック関数は何ですか.
概要
Javascriptでは、複雑に見えるがよく理解できるものもありますが、彼らを理解するには一定のテクニックが必要であり、同時に彼らを理解することが非常に重要で、彼らを理解するとドアを開けて、あなたにそれがまだ知っていることを知らせることができます.彼らは緊密に結びついて、自立しているからだ.今日私たちはこれらの簡単で重要なものについて話します.
1.関数式と関数宣言とは
関数が特殊なオブジェクトであることを知っています.そして、関数宣言と関数式も知っています.
      //    
        function show(){
            console.log(12);
        }
        
     //     
        var show = function(){
            console.log(5);
        };   

2.関数式を見てもおかしくありません.関数はオブジェクトなので、変数にオブジェクトを割り当てるか、パラメータとして渡すことができます.
     //     
        var show = function(){
            console.log(5);
        };  
        
        function Simple(show){
            show();
        }
        //     
        function Simple(){
            
        }
        simple(function(){});

関数が数値のように変数に値を与えてパラメータに渡す現象をfirst-class functionといい、難しくないでしょう.
3.オブジェクトについては、リファレンスとコピーの違いについてお話しします.
var a = 12;
var b = a;
b+=5;
alert(a);//12

これは何も説明することはありません.bコピーしてください.bはどうしてaとは関係ありませんか.
var arr1 = [12,5,8];
var arr2 = arr1;
arr2.pop();
alert(arr1);//12,5

何があったんだ?
     ,                     ,                   。

私はマントーを持っていて、基本的なタイプのコピーは私のマントーを照らしてまたあなたに作ってあげることに相当して、あなたのマントーを食べて私の手には影響がありません.
私は鍵を持っていて、シェアハウスのドアを開けることができて、対象のコピーは引用で、鍵をコピーして、あなたはトイレを分解して、私も我慢しています.理解しましたか?
4.関数伝参これは私はただ一言言っただけで、これは多くの開発者が間違いを犯した場所で、ここでは私が説明しないで、あなたが上下しても分からないことを説明しないで、ただあなたに教えるだけでいいです.
               ,           。
          ,               ,           。

では、直接例を挙げましょう.ゆっくりと悟ることができるでしょう.
function setName(obj){
  obj.name = "    · ·   "
  //  
  obj = new Object();
  obj.name = "  "
}
var Person = new Object();
setName(Person);
alert(Person.name);

5.関数のthisとargumentsについて
jsの中で一番気持ち悪いものは、一つもありません.次はこれについてお話しします.ここでは関数の中のthisだけを言います.
function show(){console.log(this);}//window
var show = function{console.log(this);}//window

気をつけて、
var person = {
        name:"leo",
        show:function(){
            this.name = 'leolau'; 
            console.log(this);//person   object
        }
};

しかし、ここには奇妙なことがあり、多くの人がバグだと思っていて、面接もよく受けています.
var person = {
        name:"leo",
        show:function(){
            this.name = 'leolau'; 
            console.log(this);//person   object
             var bug = function(){
            console.log(this);//window
            }
            bug();
        }   
};

どのように解決しますか?
var person = {
        name:"leo",
        show:function(){
            var that = this;
            this.name = 'leolau'; 
            console.log(this);//person   object
             var bug = function(){
            console.log(that);//person
            }
            bug();
        }   
};

argumentsについては実際の応用を示します.未知のパラメータの数が不定に加算されます.どうすればいいの?
6.匿名関数の自己実行と実際のライブラリへの適用方法
匿名関数の自己実行、注意、注意、この名前とiifeだけは他の名前がなくて、例えば閉鎖空間、これはみんなに自分の作った言葉をよく理解させるためです.彼の重要な用途の一つは、名前の衝突を防止することであり、jqueryなどの組織とアーキテクチャライブラリである.
名前の競合
a.js
var a = 12;

b.js
var a = 5;

同時にa,bの後ろを引用して前を覆う.ネーミング競合の前後のオーバーライドを防止する方法.
var a = 12;
(function(){
    var a = 5;
})();

ここiifesの中のaは外のaを邪魔しないで、それでは問題が来て、もし私が外のaを変えたいならば、?
これも多くのjqueryライブラリのやり方です.

(function(global,$){
    $.a = 12;
    global.a = 5;
  
})(window,jquery);

外の修正を満たし,変数汚染を防止した.次の授業を閉じてから眠くなった.
次の授業では、閉鎖、ゴミ回収、コールバック関数、タイマーを単独で話します.