2017-07-20 7 views
0

私はJavaScriptを初めて使い、ブートキャンプのアプリケーションプロセスの一部としてコーディングの課題に取り組んでいます。ネストされた関数を持つ関数は単一の関数と見なされますか?

質問には、タスクを達成するための単一の関数を記述する必要があります。

私は遠くに見てきましたが、私はまだ答えに出会っていません。

他のネストされた関数を含む関数を記述すると、それはまだ1つの関数と見なされますか?

+1

ための内部関数を書く場合、それはあなたを評価する人によって異なりますが、安全のために、私は間違いなくそれを行うことを避けると思い適用されます。代わりに、必要に応じていつでも 'this'を使うことができます。 –

+0

ネストされた関数sortの関数は、その時点で「クラス」または「モジュール」になります。機能的には(heh!)、それは単一の機能以上ですが、構文的には単なる機能です。それは確かに解釈に開放されていますが、安全に遊ぶためにはおそらくネスティングを避けるでしょう。 –

+0

@ObsidianAge私はオブジェクト指向プログラミングについて学び始めました。私はこの使い方を正確には知らない。 – Areid999

答えて

3

他のネストされた関数を含む関数を記述すると、それはまだ1つの関数と見なされますか?

はい。関数はカプセル化ユニットです。ブラックボックスです。あなたはそれを呼び出すことができ、結果を得ることができますが、それがどのように実装されているかは外部から見ても問題ありません。内部実装を複数のローカル関数にモジュール化する関数は、同じ振る舞いをしない限り区別できません。

0

はい。

技術的な観点からは、ネストされた関数を使用しない関数を記述することさえできません。変数だけを宣言する行為は、関数の連鎖を呼び出すことになります。メモリの割り当ては、最終的にアセンブリ内の関数を呼び出すことになります。

同様に、変数を設定または操作するための演算子を呼び出すことは、すべての関数APISが関数の連鎖を呼び出すことを意味する関数呼び出しです。

は、あなたがこのように見える機能minを書くとします

function min(a,b) { 
    return Math.min(a,b); 
} 

これは、それがグローバル関数を呼び出しているにもかかわらず、まだ単一の関数です。

同じロジックを使用すると、複雑なオブジェクト

function min(data) { 
    var smallest = function(a,b) { 
     if (a.x<b.x) { return a;} 
     else if (a.y>b.y) { return b;} 
     else if (a.y<b.y) return a; 
     return b; 
    } 
    return smallest(data[0],data[b]); 
} 
+1

私は、内部動作を関数呼び出しとして特定することは有用ではないと思いますが、OPはネイティブ関数についてのものです。 – RobG

+0

ありがとう!これは役に立つ説明です – Areid999

関連する問題