関数型プログラミングを使用して変異と副作用を回避する


  • 以前の投稿の問題は、splice 関数の tabClose() 呼び出しにありました.残念ながら、 splice はそれが呼び出された元の配列を変更するため、2 回目の呼び出しでは変更された配列が使用され、予期しない結果が生じました.
    これは、はるかに大きなパターンの小さな例です.変数、配列、またはオブジェクトに対して関数を呼び出すと、関数はオブジェクト内の変数または何かを変更します.
  • 関数型プログラミングの核となる原則の 1 つは、物事を変更しないことです.変更はバグにつながります.関数の引数やグローバル変数など、関数が何も変更しないことを知っていると、バグを防ぐのが簡単になります.
  • この規律をマスターし、コード内の変数やオブジェクトを変更しないようにしましょう.
  • 関数 incrementer のコードを埋めて、グローバル変数 fixedValue に 1 を加えた値を返すようにします.

  • var fixedValue = 4;
    
    function incrementer () {
    
    }
    


  • 回答:

  • var fixedValue = 4;
    
    function incrementer () {
      return fixedValue + 1;
    }
    
    console.log(fixedValue); will display 4
    console.log(incrementer()); will display 5;
    


  • 関数 incrementer は、fixedValue (4) の値を変更しませんでした. incrementer 関数は、fixedValue 値よりも 1 大きい値を返す必要があります.