JavaScriptで関数に引数がないのに、引数を渡すことができるのはどうなっているのでしょうか? こちらのサイトの関数についての疑問です。

JavaScript91閲覧xmlns="http://www.w3.org/2000/svg">25

ベストアンサー

1

1人がナイス!しています

わかりやすくて笑いながら半泣きしました。 【 即時関数 】と【 関数の戻り値が、関数 】についていずれも知らず、しかしとてもよくわかりました。 誠にありがとうございます。 ということは、即時関数において、引数は実行時に無際限に指定でき、受け取れるということでしょうか…? どれどれ...(._.) ──────────────── var test = (function() { return function(a, b, c) { return \u0027x\u0027 + a + b + c; // 指定を全て受け取れる }; })(); var result = test(\u0027あ\u0027,\u0027い\u0027,\u0027う\u0027); // 実行時に無際限に指定 console.log(result); ──────────────── おお、できました。

ThanksImg質問者からのお礼コメント

初めての即時関数を oishii_mahou さん から学ぶことができたのはとても幸運でした。どうもありがとうございました。

お礼日時:1/22 19:29

その他の回答(1件)

1

Javascriptで難題とされているクロージャーの記述方法です。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Closures 最初の (function() { })(); は ブロックで囲うことにより変数の汚染を防いだりするお約束ですね。 <script> (function() { //JSの処理 })(); </script> とよく書かれているやつを即時関数として使用しています。 もう少し簡単にして var func = (function(){ return function(a,b){ console.log(a,'=',b); return a+b; }; })(); console.log(func(2,5)); //出力 2 = 5 7 みたいにすると return function(a,b) 部分に引数が渡されているのが分かるのではないでしょうか。

1人がナイス!しています

簡単なコードをありがとうございます。確かに、 \u003ereturn function(a,b) \u003e部分に引数が渡されているのが分かるのではないでしょうか。 は分かったのですが、しかし以下で渡されていないことに合点がいきません… var func = (function(){ console.log(a,b); })(); console.log(func(2,5)); なぜ return function(a,b){ } があると受け取れるようになるのでしょうか?