2022/11/11 TIL

이성규·2022년 11월 11일
1

함수

  • 코드의 집합을 나타내는 자료형
function () {}  // 익명 함수
function 함수이름() {} // 선언적 함수
  • 반복되는 코드를 한 번만 정의해놓고 필요 시 호출하므로 반복 작업을 피할 수 있다.
  • 긴 프로그램을 기능별로 여러 함수로 작성하면 모듈화로 코드의 가독성이 좋아진다.
  • 함수별로 수정이 가능하므로 유지보수가 쉽다.

매개변수, 리턴값

  • 매개변수 : 함수를 호출할 때 괄호 안에 적는 값 (input)
  • 리턴값 : 함수의 최종 결과 (output)
function 함수(매개변수, 매개변수, 매개변수){
	문장
    문장
    return 리턴값
}

기본 매개변수의 활용

함수이름 (매개변수, 매개변수 = 기본값, 매개변수 = 기본값)
function sample(a = 기본값, b) {}
<script>
        function isLeapYear(year = new Date().getFullYear){
            console.log(`매개변수 year : ${year}`)
            return (year % 4 === 0)  && (year % 4 !== 0) || (year % 400 ===0)
        }
        console.log(`올해는 윤년일까? : ${isLeapYear()}`)

        // 매개변수 year : function getFullYear() { [native code] }
        // 올해는 윤년일까? : false
</script>

예제를 풀어보는 과정에서 콘솔창에 [native code] 발생

  • 본 메소드들을 로그 찍어보면 Native Code라는 출력을 볼 수 있는데 브라우저 자체에 컴파일되어 있기 때문에 내부 코드를 볼 수 없다고 한다.

나머지 매개변수

  • 가변 매개변수 함수 : 호출할 때 매개변수의 개수가 고정적이지 않은 함수
<script>
            function min(first, ...rests){
                let output
                let items
                
                if (Array.isArray(first)){
                    output = first[0]
                    items = first
                }else if(typeof(first) === 'number'){
                    output = first
                    items = rests
                }
                for (const item of items){
                    if (output > item){
                        output = item
                    }
                }
                return output
            }
            console.log(`min(배열): ${min(52,273,32,103,4)}`)
            console.log(`min(숫자, ...) : ${min(52,273,39,2,24)}`)

            // min(배열): 4
            // min(숫자, ...) : 2
</script>

** typeof 연산자

  • 변수 타입을 문자로 반환하는 함수
  • undefined, null, boolean, number, string, symbol, object, function의 자바스크립트가 가진 7가지 변수 타입을 구분하는 용도로 사용
  • 배열(array) 자료구조를 제공하지만, typeof는 배열(array)을 구분하지 못합니다. typeof []는 "object"를 반환합니다.
    typeof는 배열을 식별하지 못하기 때문에 배열을 구분하기 위해서는 Array.isArray()라는 다른 함수를 사용해야 합니다.

** ArrayisArray() 메소드

  • Array.isArray() 메서드는 인자가 Array인지 판별
<script>
        Array.isArray([1, 2, 3]);  // true
        Array.isArray({foo: 123}); // false
        Array.isArray('foobar');   // false
        Array.isArray(undefined);  // false
</script>

4일차 TIL후기

앞서 배운 반복문을 통해 함수파트를 공부하는데 부족함이 느껴져 반복문을 다시 한번 봐야할 것 같다. 새로운 연산자와 메서드가 간간히 보이는데 팀원분이 알려준 mdn을 통해 좀 더 자세하게 알 수 있었다. 앞으로도 mdn과 좀 더 친하게 지내야 겠다. 아 반복문이랑 함수는 공부 부족하니 더 할 수 있도록!


REFER

profile
개발자를 위한 발걸음

0개의 댓글