内部関数を使用する場合、実行時には後で呼び出すためにコンテキストを割り当てて保存しなければなりません。これを含む関数が呼び出されるたびに実行されます。その結果、内部関数を宣言することは、その関数の周りの囲みスコープ内の変数であるオブジェクトを構築するように機能すると考えるのが便利です。
メモリの量がヒープ上にオブジェクトを割り当てることとほぼ同じであるため、あまり頻繁に実行しないと、これはすべて悪くない場合があります。 (そして、場合によってはこれを避けるためにできる巧妙な最適化がいくつかあります。例えば、関数をローカルスタック空間に割り当てることができる呼び出しスタックに渡すか、またはインライン化を行うなど)。しかし、ほとんどの状況ではまだ割り当て済みなので、ビジーなループや多数の内部関数を作成する際にあまりに多くを使用しないでください。
あなたの質問に答えるには、オプションBの方が一般的に早いでしょう。しかし、これがあなたを落胆させてはいけません!
私の最終的な取り組みは、便利な内部関数が小さなランタイムオーバーヘッドよりも完全に優れていることです。パフォーマンスのボトルネックと判明した場合は、戻って最適化してください。
[ローカル機能をマイクロ最適化していないのですか?](http://stackoverflow.com/questions/4747581/is-not-having-local-functions-a-micro-optimation) – Raynos
+1についてマイクロ最適化 –
[Javascript入れ子関数のパフォーマンス](http://stackoverflow.com/q/19779752/104380) – vsync