質問するログイン新規登録
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

369閲覧

JavaScriptで関数の合成

vivo15

総合スコア13

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

2クリップ

投稿2022/05/31 15:04

0

2

JSで関数の合成することは可能でしょうか。

関数の戻り値に関数を返すことが可能という性質から複数の関数を合成して新しい関数を生成したいです。

これを実現するため、以下のコードを実行しました。

javascript

1const fxTmpl = (fx1, fx2) => fx2(fx1); 2 3const fx1 = (x, y) => x + y; 4const fx2 = n => n ** 2; 5 6const newFx = fxTmpl(fx1, fx2); 7 8console.log(newFx(3, 5));

「Uncaught TypeError: newFx is not a function」というエラー、、、

試しに、「typeof」でデータ型を確認したところ、「Number」と出力。
実際に格納されている値は「NaN」でしたが、これは「+」「**」演算子による強制型変換の産物だと考えられます。

JSで関数を合成するいい方法はありますでしょうか。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

JavaScript

1const fxTmpl = (fx1, fx2) => function(){ return fx2(fx1(...arguments)); };

投稿2022/05/31 16:50

編集2022/05/31 16:51
otn

総合スコア86389

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vivo15

2022/06/01 09:37

ありがとうございます。
guest

0

js

1const fxTmpl = ( a, b ) => ( c, d ) => b( a( c, d ) ); 2 3const fx1 = (x, y) => x + y; 4const fx2 = n => n ** 2; 5 6const newFx = fxTmpl(fx1, fx2); 7 8console.log(newFx(3, 5));

https://jsfiddle.net/2yferg0x/

投稿2022/05/31 15:36

kei344

総合スコア69625

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

vivo15

2022/06/01 09:38

ありがとうございます。
guest

0

ありがとうございます。
解決しました。

投稿2022/06/01 09:37

vivo15

総合スコア13

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問