このデザイン パターンを見たことがないのですが、これは何をしているのですか?
(function(def){
if(typeof module!='undefined'){
module.exports=def;
}
else{
this.nut=def;
}
}( function(){
...
}() ));
このデザイン パターンを見たことがないのですが、これは何をしているのですか?
(function(def){
if(typeof module!='undefined'){
module.exports=def;
}
else{
this.nut=def;
}
}( function(){
...
}() ));
それを段階的に解読しましょう
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