0

このデザイン パターンを見たことがないのですが、これは何をしているのですか?

(function(def){
    if(typeof module!='undefined'){
        module.exports=def;
    }
    else{
        this.nut=def;
    }
}( function(){
   ...
}() ));
4

2 に答える 2

1

それを段階的に解読しましょう

function(def)
{
    if(typeof module!='undefined'){
        module.exports=def;
    }
    else{
        this.nut=def;
    }
}( function(){}());

//関数が定義されていることがわかるように、外側の括弧は削除されました。これは、 定義の直後に
1つの引数を取る関数を定義する通常の方法です。ブラケットがある ため、さらに分解するとdef

function(def) //function 1
    {
        if(typeof module!='undefined'){
            module.exports=def;
        }
        else{
            this.nut=def;
        }
    }( function() /*function 2*/{}());


これは単に、JS での関数の定義のbracket ()直後に、2 番目の関数が最初の関数にパラメーターとして渡されることを意味し、ここでの関数function 1は定義の直後に呼び出されることを意味します。括弧内にあるものはすべてパラメーターとして関数に渡されるため、def基本的にはfunction2

于 2012-08-08T20:42:19.010 に答える