JS 010

8874 ワード

計算機の作成


1.シーケンス図を描く



2.変数関係の理解


計算機の動作順序に従って、最初に入力された数字numOne、演算子operator、演算子の後に入力された数字をnumTwo変数に入力する.
この場合、変数numOneのみが存在し、変数operatorのみが存在し、変数operatorのみが存在し、変数numTwoが存在する.

3.コード


(1)同じコードを繰り返し,繰り返し,繰り返し,繰り返し記述を最大限に排除する.
(2)変数のデータを追加または変更した場合は、画面に出力することを忘れないでください.
(3)ほぼ同一であるが一部のみ異なる関数については,パラメータ処理により重複を解消することができる.
(4)addEventListenerの2番目のパラメータは「関数」を含む必要があり、onClickNumber(「0」)の戻り値は定義されていないため、この関数の戻り値は()=>{}である.に変更する必要があります.
△これらの関数を高次関数と呼ぶ.
(5)return値を変更した後、関数の動作文では、演算子変数が空である場合と空でない場合にif文を加えなければ実行できません.(onClickNumber関数のアクション文には入れず、return値に入れます.)
(6)矢印関数では,閉じた括弧と戻りリンクが一緒であればどちらも省略できる.(最適化)

高次関数による重複除外


関数は、呼び出し時に数値、文字列、ブール値に限らず、Javascriptのすべてのデータ型である値を返します.したがって、関数は関数を返すことができます.
<script>
  const func = () => {
    return () => {
      console.log('hello');
    };
  };
  
  const innerFunc = func();		// func(); == () => {console.log('hello');
  innerFunc();
  
  hello
</script>
この場合、func関数を呼び出すと関数が返され、返される関数は他の変数に格納されてもよいし、変数に格納された関数を再呼び出すこともできる.
関数に呼び出されたコードがある場合は、その部分をその関数の実際の戻り値に変換して理解できます.
同じ関数にパラメータを適用すると、func関数を呼び出すとコンソールに設定されます.logの関数が返されます.
<script>
  const func = (msg) => {
    return () => {
      console.log(msg);
    };
  };
  
  const innerFunc1 = func('hello');
  const innerFunc2 = func('js');
  const innerFunc3 = func();
  innerFunc1();
  innerFunc2();
  innerFunc3();
  
  hello
  js
  undefined
</script>
(7)if文が重なる回数が多いほど,コードが難しくなる.ほとんどのif文のオーバーラップは、シーケンス図を少し修正することで回避できます.
1)ifゲートの後に現れる共通の手順を各分岐内部に入れる.
2)境界点で短いプログラムから実行するために、if文を作成する.
3)ショートプログラム終了後,終了はreturn(関数内部)またはbreak(forゲート内部)である.
4)elseをクリアする.(重複が削除されます.)
5)次に重なる分岐点が現れると,1)~4)の過程を繰り返す.
예시
<script>
  function test() {
    let result = '';
    if (a) {
      if (!b) {
        result = 'c';
      }
    } else {
      result = 'a';
    }
    result += 'b';
    return result;
  }
</script>

<script>
  function test() {
    let result = '';
    if (!a) {
      result = 'a';
      result += 'b';
      return result;
    }
    if (!b) {
      result = 'c';
    }
    result += 'b';
    return result;
  }
</scirpt>
(8)ifゲートおよびswitchゲート、およびforゲートおよびwhileゲートは、互いに柔軟に変更可能であるべきである.
(9)+演算子以外の演算子は、文字列を自動的に数値形式に変更するので、形式変換関数を使用する必要はありません.