경기도 인공지능 개발 과정/javascript

javascript 함수

agingcurve 2022. 6. 2. 14:00
반응형

함수란

동작해야 할 목적대로 명령을 묶어 놓은 것
각 명령의 시작과 끝을 명확하게 구별할 수 있음
묶은 기능에 이름을 붙여서 어디서든 같은 이름으로 명령을 실행할 수 있음
자바스크립트에는 이미 여러 함수가 만들어져 있어서 가져다 사용할 수 있음
) alert( )

 

함수의 선언 및 호출

함수 선언 : 어떤 명령을 처리할지 미리 알려주는 것

 

함수 호출 : 선언한 함수를 사용하는 것

 

 

동일한 함수를 다시 작성한다면, 마지막에 선언된 함수로 적용이 되고,

위에 있는 표현식들도 아래쪽 함수로 적용이 되어 나타나게 된다.

이를 함수 호이스팅(Hoisting)이라고 한다.

 

아래쪽의 c인자의 경우, 선언이 되지 않았을때, undifned로 선언되어서

계산 시 NaN으로 출력되게 된다.

호이스팅

- 변수를 뒤에서 선언하지만, 마치 앞에서 미리 앞에서 선언한 것처럼 인식함

- 함수 실행문을 앞에 두고 선언 부분을 뒤에 두더라도 앞으로 끌어올려 인식함

선언적 함수와 변수적 함수의 동작 차이가 있다.

변수적 함수의 경우, 스크립트 순서대로 진행이 되는데, 선언적때와는 다르게 아래쪽 함수가 실행이 되지 않고 실행이 된다.

 

재선언과 재할당이 가능하다

재선언 : 이미 선언한 변수를 다시 선언할 수 있음

 

재할당 : 같은 변수에 다른 값을 할당할 수 있음

à 재선언과 재할당이 가능하면 실수로 변수를 잘못 조작할 확률이 높아짐

실행이 되지 않는것을 볼 수 있다.

 

정의된 매개변수보다 값을 많이 넣으면 무시될 수 있다.

 

 

원래 정의된 매개변수보다 값을 적게 넣으면... 값이 없이 함수를 호출한다.

 

 

이런 특징을 이용하면
매개변수에 따라서 각각 다른 일을 할 수 있도록 구현이 가능하다. 이런것을 매서드 오버로딩이라고 한다.
 
 
 

 

매개변수에 따라 각기 다른 방식으로 구현이 된다.

 

 

매개변수와 상관없이 함수를 호출 하려고 하는것을 쓰는데
애초에 자바스크립트는 배열객체로 만들어서 만들려고 하고 있다.
argments가 있으면 if문을 써서 0이랑 같을때, 이렇게
1이랑 같다면 이렇게 아니면 이렇게 등등 구현이 가능하다.

 

함수 인자에 아무것도 없을때는 "안녕 자바스크립트"가 출력되고 1개일 경우 안녕 + 인자 가 입력되게 하고

아니면 사용된 인자를 사용할 수 있도록 작성

 

let을 사용한 변수의 특징

블록 변수 블록({ }) 안에서만 사용할 수 있다
à 전역 변수는 변수 이름과 초깃값만 할당하면 됨

재할당은 가능하지만 재선언은 할 수 없다
호이스팅이 없다
 
 

const를 사용한 변수의 특징

 

상수 변하지 않는 값을 선언할 때 사용
재선언, 재할당할 수 없음

 

내부함수 표현

 

변수가 선언이 안됬을때 오류와 선언이 안된(undifined)것은 다름 

 // 매개변수로 전달하는 함수 : 콜백함수 라고 한다

 

 

 

클로저 함수

        // 함수가 종료된 후에도 함수에서 선언한 지역변수가 남아있는 현상
        // test()함수안에서 생성된 공간 자체를 콜로저 라고 하기도 하고
        // 리턴된 함수 자체를 클로저라고 부르기도하고..
        // 살아남은 지역변수 outValue를 클로저라고 부르기도 한다.

 

 

 

화살표 함수

ES6 이후 사용하는 => 표기법
익명 함수에서만 사용할 수 있음

'경기도 인공지능 개발 과정 > javascript' 카테고리의 다른 글

Javascript 객체  (0) 2022.06.07
Javascript 기본2  (0) 2022.05.31
Javascript 기본1  (0) 2022.05.31