ホームページ  >  記事  >  バックエンド開発  >  JavaScript - 変数の内容に基づいて対応する関数を実行するにはどうすればよいですか?

JavaScript - 変数の内容に基づいて対応する関数を実行するにはどうすればよいですか?

WBOY
WBOYオリジナル
2016-12-01 01:27:501347ブラウズ

いくつかの関数 funA(x)、funB(x)、funC(x)、funD(x)、funE(x)、funF(x) を書きました。今度は、特定のパラメーター str に基づいた要件があります。さまざまな計算を実装します。例えばstr='abc'の場合、x→funA(x)→funB(x)→funC(x)→y str'ace'の場合、x→funA(x)→funC( x )→funE(x)→y。

リーリー

str に基づいてケースを作成し、別の fun_XXX() にジャンプするスイッチを記述できることはわかっていますが、これは柔軟性がありません。最終的な目標は、呼び出し時に、異なる関数名を順番に記述した配列を作成し、x を入力し、配列の最初の要素に対応する関数を最後の関数まで実行し、最終的な結果 y を出力することです。

他に短縮する方法はありますか?それとも、funstr='abc' のように変数に基づいて同じ名前の関数を直接実行し、funstr(x) のようなものを実行すると関数 abc(x) が実行されるなど、自由な組み合わせを実現できますか?

js または php 関連の構文を使用できます。

返信内容:

いくつかの関数 funA(x)、funB(x)、funC(x)、funD(x)、funE(x)、funF(x) を書きました。今度は、特定のパラメーター str に基づいた要件があります。さまざまな計算を実装します。例えばstr='abc'の場合、x→funA(x)→funB(x)→funC(x)→y str'ace'の場合、x→funA(x)→funC( x )→funE(x)→y。

リーリー

str に基づいてケースを作成し、別の fun_XXX() にジャンプするスイッチを記述できることはわかっていますが、これは柔軟性がありません。最終的な目標は、呼び出し時に、異なる関数名を順番に記述した配列を作成し、x を入力し、配列の最初の要素に対応する関数を最後の関数まで実行し、最終的な結果 y を出力することです。

他に短縮する方法はありますか?それとも、funstr='abc' のように変数に基づいて同じ名前の関数を直接実行し、funstr(x) のようなものを実行すると関数 abc(x) が実行されるなど、自由な組み合わせを実現できますか?

js または php 関連の構文を使用できます。

例を挙げましょう。eval は失礼すぎます。 。 。お兄さん、会いに来てね

リーリー

例えば、同様のアイデアは自由に使用できます

トマトが嫌いな@魚をベースに改良

  • 電話はrun函数的时候,都要生成四个函数和一个map,比较费开销。可以拎到run外で。

  • reduce代替forEach

  • を使用する
リーリー

最も単純な eval
面倒な {'abc': fabc}

アイデアは非常にシンプルです。phpnodeサンプルコードを投稿します

phpバージョン

リーリー

nodeバージョン

リーリー

定義された関数をすべてオブジェクトに入れ、戻り値を設定して呼び出します;
var ab={

リーリー
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。