카테고리 없음

JS 의 함수와 스코프

tp134679 2024. 11. 20. 16:48

<목차>

1. 전역 스코프와 지역 스코프 

2. function 함수 

2.1 호출과 선언 

3. return 

 

1. 전역 스코프와 지역 스코프

 

스코프란 유효범위라는 듯으로  변수에 접근할 수 있는 범위 라고 볼 수 있다 스코프를 사용하는 이유는 

- 영역을 구분하여 변수 충돌을 방지

- 코드의 가독성 및 유지보수성 상향  을 위해서 사용한다.

 

스코프는 크게 전역 스코프와 지역 스코프로 나뉘며

 

 전역에 선언된 변수로서 전체에서 접근이 가능하다.

해당 사진은 전역 스코프와 함수 스코프 이해를 위하여 첨부한 사진으로  평가단계시 선언된 let ab를 읽고undefinde 값을 주고  지역스코프{}안에는 선언된 변수가 없기에 평가단계가 끝나게 된다. 

이후 실행단계시 함수 값과 할당이 이루어지기에  그안에 변수 값 까지 평가함으로 평가단계 일때 undefinde 였던 let ab 의 =값 1을 할당하고 지역스코프 안에 log 함수를 읽지만 지역함수 내에서 선언된 ab값을 찾지 못함으로 밖의 지역스코프

로나가서 ab값을 찾아와서 1을 출력합니다. 그후 ab=2 다 라고 재할당 선언시 똑같이 자신의 위에 선언된  지역스코프 에있는 ab에 올라가서 값을 할당한후 그아레 log가 이를 출력하기에 2가 나오게 됩니다.

 

 

함수    {}  내  에서 선언된 변수 로서 정확히는 두 가지로 나뉘게 된다.  지역스코프와 함수내의 스코프 

둘다 {} 을 사용하지만  let와 const는 블록스코프에 따라서 접근 범위가 제한되고 var는 함수의 스코프에 따라서 접근 범위가 제한됩니다. 즉 

let는 전역스코프로 선언시 에러가 남

해당 지역스코프 내에서 선언한 log는 작동하지만 전역스코프에서의 log는 작동을 하지않음. 

하지만 var 는 함수 스코프에서만 제한되기 떄문에 일반 스코프에서는 무시하고 나타남 이러한 변수가 많이 이러남으로 var는 거의 사용하지 않는다.

 

 

 

 

2. function 함수 

function 는 함수를 선언하겠다 라는 예약어로 ES5 의 문법입니다. 

funstion 을 사용하기 위한 기본 모양은

function (예약어) 함수이름(매개변수) {코드의 내용}  으로 구성된다. 

- 예약어는 함수에 적용할 이름으로 자유롭게 작성 가능 합니다.

- () 매개변수는 함수에 전달된 데이터를 받을 수 있는 부분.

- {} 인자값  함수의 본문을 감싸는 중괄호로 이안에 함수를 실행시킬 때 필요하 코드가 들어갑니다. {} => 함수 스코프

 

2.1 함수의 호출과 선언

함수를 작성한다고 선언을 하면 

해당 showmessge 라는 예약어를 가진 함수를 선언 하였고 그 코드내용 안에 hello showmessage 를 작성하였다.

함수내에서는 hello showmessage라는 내용이 선언되었고 들어있지만

 

이를 불러오기 위해선 함수 외부에서 호출의 호출이 필요합니다 이를 부르는 문법은 지역스코프에서 예약어를 사용하여 호출 하겠다는 의미를 가집니다.

 

3. return

리턴은 예약어로 함수를 반환해주는 값을 가진다 여기서 반환값이란, 말 그대로 함수가 완료되었을 때 함수가 반환하는 값을 뜻한다. 즉 함수에서 return 을 사용하게 되면 뒤에 인지한 코드들은 자동적으로 중지된다.

 

즉 함수의 반환값을 얻을 때 사용한다.

해당 인사를 하는 리턴값을 가진 함수를 사용할 시 함수를 호출할때 인자[함수의 이름 뒤에 붙은 ()매개변수 부분의 데이터를 넘겨주는 역할] 값을 리턴시키며 하나씩 보여지게 된다. 함수 밖의 영역에서 리턴 값을 받기위하여  let을 사용한 그릇이  필요하며 받아줄 그릇 (let, var)  등  없이도 호출이 가능하나  호출한 값을 다시 받아오기 위해선 return을 사용하는게 좋다 .

return 을 사용하나 사용하지 않으나 함수밖의 호출로 값을 부를 순 있다.