例えば、通常の関数が次のように定義されていた場合、
アロー関数で表しても一番外側にある括弧は同じ位置ではありません。
即時関数:
(function func(){
関数処理;
}());
即時関数(アロー関数で表した場合):
(func=>(...関数処理...)());
しかし、引数指定がある即時関数の場合は、
let c = (function func(a,b){
return a+b;
}(1.3));
console.log(c); // 出力値 4
大外の括弧の位置を遵守してアロー関数で表すと、関数そのものが出力されてしまいます。
let c = (func =(a,b)=>(a+b)(1,3));
// 出力値は、(a,b)=>(a+b)(1,3)となり関数を返してきます。
アロー関数で具体的な値を予め設定された引数を持つ即時関数をアロー関数で表すには、
let c = (func =(a,b)=>(a+b))(1,3); // 出力値 4
上記のように括弧の位置を変更する必要があります。
これはECMAScript推奨の即時関数の大外の括弧の位置と異なります。
ECMAScriptと異なる方法を取る必要性があったのか、
この理由を御存知の方がいらっしゃいましたら、御回答頂けますでしょうか。
アロー関数の仕様と言われれば、それまでですが、納得がいかないのです。
即時関数:
(function func(){
関数処理;
})();
これでも正しく動作するからいいのではないかというのは、
正しい記法とは異なるので無しでお願いします。
どうぞよろしくお願い申し上げます。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>let c = (func =(a,b)=>(a+b)(1,3));
>// 出力値は、(a,b)=>(a+b)(1,3)となり関数を返してきます。
これは当然こうなるよね。
(a+b)を関数として引数(1,3)で呼び出す式に
解釈するのが自然。
関数リテラルは}で終わるから無名関数の終端が明確だが
アロー関数はそうは行きません。
(a+b)の所で関数が終端しているとするのは
どう考えても変態だと思います。
>(function func(){
> 関数処理;
>})();
>これでも正しく動作するからいいのではないかというのは、
>正しい記法とは異なるので無しでお願いします。
これは完璧に正しい記法。これを正しくないとする根拠は????
極普通に使われていますよ。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- 数学 数学の問題が分かりません! 次の関数y=f(x)の逆関数y=f^-1(x)を求めよ. ※答えが2次関 3 2023/06/22 19:22
- JavaScript カラーミーショップのsectionループ内で、[引数][戻り値]ありの関数的な処理を行いたいです。 1 2022/05/07 19:39
- Excel(エクセル) 出退勤管理の遅刻・早退時間について 3 2023/08/10 15:33
- その他(Microsoft Office) Excelで時間計算(負) 8 2023/02/26 05:47
- 物理学 物理力学の問題を教えてください 2 2022/07/21 15:18
- Excel(エクセル) エクセルの数式で添付写真のものを入力していてわからないのですが、こちらの通り[]括弧も入れて入力しま 4 2023/02/05 18:33
- PostgreSQL 数値が定期的にあらわれる文字列から、いくつめに出現した数値が指定して切り出したい 1 2023/06/08 13:12
- Excel(エクセル) エクセル、日々の集計整理方法。(再送です。) 5 2022/10/02 00:19
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
①入力フォーム→②確認表示画面→③...
-
GASでGoogleフォームの自動返信...
-
読み込んだQRコードをフォーム...
-
ジャバスクリプトについて。
-
セレクトを全て選択されていな...
-
ローディングアニメーションの...
-
GASでチェックボックスを一括of...
-
GASに文字列として関数を入れる...
-
初心者です。gulpでコンパイル...
-
var exports = exports || {}; ...
-
ボタンを押したあとに画像を表...
-
IndexedDB を使ってファイルア...
-
React hooksが値を返して配列変...
-
Google scriptについて 至急scr...
-
スマホ上で、左右スワイプで次...
-
ブックマークレットについて
-
jsで、配列内の文章を改行する...
-
追加ボタンを押した際に ok ボ...
-
プログラムについて。
-
Q&A掲示板の入力フォームに文字...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エラー(型が一致しません。)...
-
VB6でユーザー定義型がNothing...
-
TextChangeイベントが発生しない
-
#define 文
-
ifdefとenum
-
LRESULTとHRESULT
-
fetchでreturnで戻り値
-
関数定義について質問です 架空...
-
PHP + MySQL で登録時に重複チ...
-
時間差を取得結果を求めるには
-
【javaScript】KeyboardEventで...
-
jQueryの関数内の変数について...
-
VBS 名前定義の確認→ありかなし...
-
JavaScriptの即時関数をアロー...
-
イベントリスナーの重複登録に...
-
PHP requireの後にJS実行
-
VB.NET の配列の要素数
-
python: 直角三角形の種類を求...
-
配列の要素番号を取得するには?
-
c++ cmathとmath.h
おすすめ情報