[TIL] JS: Function



きのうかんすう


1.関数の定義

  • 関数宣言:カッコで囲まれ、結果値を返します.
  • function square(number) {
      return number * number;
    }
  • 関数式:関数名は省略できます.
  • let square = function(number) {
      return number * number;
    let foo = function(a, b) {
      return a * b;
    };
    
    let bar = foo;
    
    console.log(foo(10, 10)); // 100
    console.log(bar(10, 10)); // 100

    2. Property

  • Arguments関数を呼び出すときに伝達されるパラメータ情報を含む類似配列オブジェクト
  • .
    function sayThanks(name) {
      console.log('Thank you for your purchase '+ name + '! We appreciate your business.');}
    
    sayThanks('Cole');
    // print 'Thank you for your purchase Cole! We appreciate your business.'
  • Caller自身の関数
  • を呼び出す.
    function foo(func) {
      let res = func();
      return res;
    }
    
    function bar() {
      return 'caller : ' + bar.caller;
    }
    
    console.log(foo(bar)); // caller : function foo(func) {...}
    console.log(bar());    // null (browser에서의 실행 결과)
  • Length関数から始まるパラメータ数を定義します.
    (arguments.lengthは、関数呼び出し時のパラメータの個数である.)
  • function foo() {}
    console.log(foo.length); // 0
    
    function bar(x) {
      return x;
    }
    console.log(bar.length); // 1
    
    function baz(x, y) {
      return x * y;
    }
    console.log(baz.length); // 2
  • Name関数名
  • protoタイプオブジェクトにアクセスするアクセス者.
  • Prototype
  • 3. Arrow Function

    const plantNeedsWater = function(day) {
      if(day === 'Wednesday'){
        return true;
      } else {
        return false;
      }
    };
    
    const plantNeedsWater = (day) => {
      return day === 'Wednesday' ? true : false;
    };
    
    const plantNeedsWater = day => day === 'Wednesday' ? true : false;

    4.関数の形式

  • 再帰関数:独自の関数を呼び出します.繰り返し演算を簡単に実現できます.
  • // 피보나치 수열
    // 피보나치 수는 0과 1로 시작하며, 다음 피보나치 수는 바로 앞의 두 피보나치 수의 합이 된다.
    // 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, ...
    function fibonacci(n) {
      if (n < 2) return n;
      return fibonacci(n - 1) + fibonacci(n - 2);
    }
    
    console.log(fibonacci(0)); // 0
    console.log(fibonacci(1)); // 1
    console.log(fibonacci(2)); // 1
    console.log(fibonacci(3)); // 2
    console.log(fibonacci(4)); // 3
    console.log(fibonacci(5)); // 5
    console.log(fibonacci(6)); // 8
    
    // 팩토리얼
    // 팩토리얼(계승)은 1부터 자신까지의 모든 양의 정수의 곱이다.
    // n! = 1 * 2 * ... * (n-1) * n
    function factorial(n) {
      if (n < 2) return 1;
      return factorial(n - 1) * n;
    }
    
    console.log(factorial(0)); // 1
    console.log(factorial(1)); // 1
    console.log(factorial(2)); // 2
    console.log(factorial(3)); // 6
    console.log(factorial(4)); // 24
    console.log(factorial(5)); // 120
    console.log(factorial(6)); // 720
  • コールバック関数:特定のイベントが発生したときにシステムによって呼び出される関数
  • <!DOCTYPE html>
    <html>
    <body>
      <button id="myButton">Click me</button>
      <script>
        var button = document.getElementById('myButton');
        button.addEventListener('click', function() {
          console.log('button clicked!');
        });
      </script>
    </body>
    </html>
    setTimeout()
    function doSomething() {
      var name = 'Lee';
    
      setTimeout(function () {
        console.log('My name is ' + name);
      }, 100);
    }
    
    doSomething(); // My name is Lee