용어/Differences by language

[국비][JS/JAVA] 명명함수/익명함수

줌인. 2024. 5. 21. 22:52

[자바스크립트_함수]

명명함수 익명함수
function 함수명 (매개변수) { } let 변수 = function (매개변수) { }
>> 함수명() >> 함수명()
※ 순서 무관, 자바와 다르게 호출 후 함수 선언 가능
    (자바스크립트는 당연히 밑에 있다고 생각하는 스타일)
※ 위에서 아래로 실행 순서, 따라서 함수 선언 후 호출 진행

※ 자바스크립트는 동적 언어임에 따라 매개변수를 별도로 지정하지 않음

매개변수로 모든 타입을 받을 수 있음

선택자.addEventListener("이벤트명", 익명함수) : 익명함수의 매개변수를 e로 선언시 이벤트 정보 접근 가능

 

    <script>
        //명명함수
        //프로그래밍 하는 학생을 기능화
        //자바 스크립트는 매개변수 let 선언하지 않아도 됨
        //명명 함수는 순서를 바꿔도 된다.

        //매개변수가 없을 경우
        function programming() {
            console.log("프로그래밍 하는 학생입니다.");
        }
        programming();

        //프로그래밍 하는 학생 한명씩 증가함
        //매개변수가 있을 경우 + 반환할 경우
        function program(student) {
            console.log("반에 학생은 " + student + "명 있습니다.")
        }
        program(15);
        program(16);

        let f = function () {
            console.log("익명함수");
            if (true) {
                return; // 함수를 빠져나가는 기능 (if-break처럼)
            }
        }

        f();
        //callback 함수 형태
        //callback : 다른 함수가 실행을 끝낸 뒤 실행
    </script>
콜백함수(callback function)
파라미터(매개변수)로 함수를 전달받아, 함수의 내부에서 실행하는 함수
익명의 함수를 사용 (함수 내부에서 실행되기 때문에 이름이 없어도 무방)
∴ 함수 자체를 전달한다고 이해할 것

 

(콜백 함수 예시)

        function food(sth, callback) {
            //즉 파라미터 callback은 menu()를 의미
            // food 함수는 콜백 함수를 인수로 받아서 실행함
            //특이하게 파라미터 값은 함수 이름만 전달한다!! (함수 참조 전달)
            console.log("preparing " + sth);
            callback(sth);
        }
        function menu(sth) { //callback fimction
            console.log("오늘의 메뉴는 " + sth + " 입니다.")
        }

※ 특이하게 파라미터 값은 함수 이름만 전달

    (∴ 함수 참조 전달)


[자바와 자바 스크립트 차이점]

자바(정적) 자바스크립트(동적)
- 명명함수라도 순서를 바꿔서는 안됨 - 명명함수는 순서를 바꿔도 됨
- 지역변수, 매개변수 모두 타입/변수를 선언해야 함 - 매개변수 변수 선언 let 생략 가능
- 매서드에 매개변수를 받을 수 있도록 선언하면 그 타입에
  맞는 매개변수를 호출해야 함
- 매서드에 매개변수를 받을 수 있도록 선언하고, 매개변수를
  호출하지 않아도 가능
자바스크립트 매개변수 let 생략 가능 이유
매개변수 param은 자동으로 함수 범위 내에서 선언됨

 

(참고 예제)

        function program(student) {
            console.log("반에 학생은 " + student + "명 있습니다.")
        }
        program(15);
        program(16);
        function myFunction() {
              let hi = "hello"; // 지역 변수
               console.log(hi); // "hello"
          }
        myFunction();
        // console.log(hi); // hi is not defined (오류 발생: hi는 함수 외부에서 접근 불가)

        function myFunction() {
               hi = "hello"; // 암묵적 **전역 변수**
               console.log(hi); // "hello"
        }
        myFunction();
        console.log(hi); // "hello" (암묵적 전역 변수로 함수 외부에서도 접근 가능)

 

 

ⓛ 순서_ 자바 코드 예시

public static void hello() {
    System.out.println("안녕하세요");
}
hello();

 

① 순서_자바스크립트 코드 예시

        hello();
 
        function hello() {
            console.log("안녕하세요");
        }

 

----

 

② 지역변수, 매개변수 타입/변수 선언_자바 코드 예시

public static void hello(String language) {
    System.out.println(language + "의 인사말입니다.");
}
hello("korea");
hello("africa");
hello("usa");

 

② 지역변수, 매개변수 'let' 생략_자바 스크립트 코드 예시

        hello("korea");
        hello("africa");
        hello("usa");
       
        function hello(language) {
            console.log(language + "의 언어입니다.");
        }
728x90