Programming/JS

[JavaScript] 4. JS의 함수

코딩하는 포메라니안 2022. 3. 20. 21:08

1. JS의 함수란?

- 일급(first-class) 객체

- 변수, 객체, 배열 등에 저장 가능

- 함수의 인자 혹은 반환값으로 사용 가능

- 프로그램 실행 중, 동적으로 생성 가능

 

 

 

2. 함수 정의 방법

방법1) 함수 선언문

function 함수이름(매개변수1, ... ){
    //실행 코드
}

 

방법2) 함수 표현식

let 함수이름 = function(매개변수1, ... ){
    //실행 코드
}

 

방법3) Function 생성자 함수(잘 안씀)

let 함수이름 = new Function("매개변수1", "매개변수2", ..., "함수내용");

let sum = new Function("n1", "n2", "console.log(n1+n2);");
sum(1, 2);//3

 

[함수 호출]

함수이름(매개변수1, ... , 매개변수n);

 

 

 

3. 함수 호이스팅

- JS는 var, function을 호이스팅함

 

1. 함수 선언문

- 선언 위치와 상관없이 어디서든 호출 가능

- 함수 선언, 초기화, 할당이 한번에 이루어진다.

- 스크립트(js파일)이 로딩될 때 변수객체에 저장됨.

console.log(plus(1, 2));//3

function plus(n1, n2){
    return n1+n2;
}

 

 

2. 함수 표현식, Function 생성자 함수

- 함수 호이스팅이 아닌 변수 호이스팅이 발생

- 나중에 할당해줘야지 쓸 수 있음

plus(1, 2);//error

var plus = function(n1, n2){
    return n1+n2;
};

 

 

 

4. 매개변수

- 함수 정의 시 매개변수 타입을 명시하지 않음

- 매개변수 개수가 일치하지 않아도 호출 가능

function sum(x, y){//1, 2가 들어옴
    console.log(x+y);
}

sum(1, 2, 3);//3
sum(1)//NaN = 1 + undefined

 

 

 

5. 콜백함수

- 이벤트가 발생했을 때 시스템에 의해 호출되는 함수

- 개발자가 명시적으로 호출하는 함수가 아님

- 비동기 함수

<!--예시1 : Event Handler-->
let btn = document.querySelect<button class="btn">버튼</button>
<script>
    let btn = document.querySelector(".btn");
    btn.addEventListener("click", function(){//이 함수가 비동기
        console.log("버튼을 눌렀습니다.");
    });
</script>

<!--예시2 : Timeout-->
<script>
    //setTimeout은 동기
    setTimeout(function(){//이 함수가 비동기
        console.log("5초 후, 실행");
    }, 5000);
</script>

 

'Programming > JS' 카테고리의 다른 글

[JavaScript] 4-1. 화살표 함수  (0) 2022.05.04
[JavaScript] 5. Window 객체  (0) 2022.03.20
[JavaScript] 3. JS의 객체(Object)  (0) 2022.03.14
[JavaScript] 2. JS 기본 문법  (0) 2022.03.13
[JavaScript] 1. Javascript 개요  (0) 2022.03.13