専門家は迂回します!これは閉鎖自体とは何の関係もありません。タイトルを取得する方法がわかりませんので、数字を集めました。許してくれることを願っています!
今日、JSを学んだばかりの友人が私にコードをくれて、なぜこの方法が実行されなかったのかと尋ねました。コードは次のとおりです。
コードコピーは次のとおりです。
関数makefunc(x){
return function(){
xを返します。
}
}
アラート(makefunc(0));
実際、それが実行されないということではなく、友人がアラートがfunction(){return x;}ではなく「0」であることを意味するということです。
スクリプトが間違っていると書かれているわけではありません。また、リターンを理解せず、現在の関数から出て、その関数から値を返すだけです。返された関数が関数の場合、返された関数自体も関数自体です。
このような上記のコードを変更できます。これはアラートです(makefunc(0)()):
コードコピーは次のとおりです。
関数makefunc(x){
return(function(){
xを返します。
})();
}
アラート(makefunc(0)());
関数実行の結果を返したい場合は、最初に関数を実行する必要があります。たとえば、
コードコピーは次のとおりです。
関数makefunc(x){
return(function(){
xを返します。
})();
}
アラート(makefunc(0));
これが匿名関数です。
コードコピーは次のとおりです。
(関数 (){
xを返します。
})();
最初のブラケットの内部には匿名関数があり、2番目のブラケットは匿名関数を呼び出すために使用され、2番目のブラケットの必要なパラメーターを渡すことができます。例えば:
コードコピーは次のとおりです。
(function(x、y){
アラート(x + y);
})(23 );