“혼자 공부하는 자바스크립트” 스터디 모임 정리 노트 입니다. 📚

함수의 기본 형태

  • 함수 : 기능을 수행하기 위한 명령문들의 집합. javascript에서는 함수도 하나의 자료로 취급한다.

  • 익명함수/람다식 이름이 지정되지 않은 함수. 호이스팅하지않는다.

  • 선언적함수 이름을 지정하여 호출할 수 있는 함수. 가장 많이 쓰고 있다.

  • 전개 연산자 배열을 전개하여 매개변수로 전달할 때 사용하는 연산자. ...배열명 와 같은 형태로 매개변수에 사용한다.

    function name (input) {}
    name(...array)
    
  • 나머지 매개변수 호출 시 넘겨주는 매개변수 갯수는 함수에서 설정한 매개변수의 갯수를 넘길 수 없는데, 나머지 매개변수일 경우 보다 많이 받아올 수 있다.

    function name (input1, input2, ...inputs) {}
    name(input1, input2, input3, input4, input5)
    

    ※나머지 매개변수를 일반 매개변수와 혼용하여 사용할 때에는 일반 매개변수보다 뒤에 위치시켜야한다.

  • 기본 매개변수 매개변수의 default값을 설정한다.

함수 고급

  • 콜백함수 함수를 하나의 자료형으로써 매개변수로 사용할 때, 매개변수로 사용되는 함수를 “콜백함수”라고 한다.

  • 화살표함수 단순한 형태의 익명함수

    (매개변수) = > {
        함수내용
    }
      
    (매개변수) => 리턴값
    

    ※ this 키워드의 사용이 다르다. 자세한 내용은 6챕터 Object에서

  • 메소드 체이닝(method chaining) 메소드의 리턴값을 기반으로 함수를 줄지어 사용하는 것

    arr.filter(e => e % 2).map(e => e + e).forEach(e => {console.log(e)})
    // → filter로 특정 조건의 배열을 리턴받아 map으로 각 값을 연산한 배열을 리턴받은 후 forEach로 해당 배열을 출력해준다.
    
  • 타이머 함수 특정 시간 마다 혹은 특정 시간 이후 콜백함수를 호출할 수 있는 함수 ※ 시간의 단위는 밀리초(1/1000초)

    • setTimeout(함수, 시간) 특정 시간 후에 함수를 한 번 호출한다. Return 값으로 타이머ID를 반환한다.
    • setInterval(함수, 시간) 특정 시간 마다 함수를 호출한다. Return 값으로 타이머ID를 반환한다.
    • clearTimeout(타이머ID) Timeout 함수로 설정한 타이머를 제거한다.
    • clearInterval(타이며ID) setInterval 함수로 설정한 타이머를 제거한다.
  • ⭐ 즉시 호출 함수 선언 후 즉시 호출하는 함수 패턴

    (function() { /* 함수 내용 */})()
    

    웹 사이트를 구현할 때 일반적으로 여러개의 js 문서가 하나의 HTML 페이지에 사용된다. 때문에 각 js 문서 간 변수/함수명의 중복이 발생할 수 있고, 이로 인해 오류가 있을 가능성도 있다.

    < 문제 예시 >

    <script>
        let a = 'apple'
    </script>
    <script>
    	let a = 'art'
    </script>
    <!-- Uncaught SyntaxError 발생 -->
    

    이를 방지하기 위해 javascript에서는 익명함수를 즉시 호출하는 패턴을 자주 사용한다. 변수가 존재하는 범위는 스코프 {} 단위이기때문에 함수를 통해 외부와 내부의 변수 범위를 구분하여 사용하는 것이다.

    < 문제 해결 예시 >

    <script>
        let a = 'apple'
        console.log('{} 외부의 a값은 ' + a)
    </script>
    <script>
        // 블록이 다르더라도 여기에서 a를 선언하거나, 호출하면 Uncaught Typ Error 가 발생한다. 꼭 아래와 같이 스코프 안에 넣어주자.
    (function () {
        let a = 'art'
        console.log('{} 내부의 a값은 ' + a)
    })()
    </script>
     <!-- 외부의 a값은 apple
     	  내부의 a값은 art -->
    
  • 엄격 모드 (strict mode) javascript는 문법에 유연한 언어로 일부 문법 오류를 무시하고 정상 작동하는데, 엄격 모드는 이러한 문법 오류를 무시하지 않아 프로그램 작동을 멈추고 Error code를 출력하게 한다.

    < 사용 예시 >

    <script>
        'use strict'
    </script>
      
    <script>
        (function(){
            'use strict'
        })()
    </script>