상세 컨텐츠

본문 제목

자바스크립트 : 함수 정의문과 변수 종류 (지역변수, 전역변수 등)

공부는끝이없다/java script

by hkzeze 2020. 8. 27. 17:31

본문

/*

태풍이 온다고 온다고 난리 난리를 쳐서 창문도 다 닫고, 꼭 잠그고 잤는데 태풍은 커녕 비도 잘 안오고 햇빛이 쨍쨍.. 덕분에 깊은 숙면을 하였고 학원 지각을 했다. 허허...변명하고는.

특히 요즘 저번과 마찬가지로 자바스크립트 부분 진도를 정말 번개같이 나가고 있어서 조금이라도 빠지면 혼자서 공부해야 하는 양이 만만치 않았는데 지각을 또 해버려서 오늘 쉬는 시간 내내 복습하느라 힘들었음..하........! 

특히 자바스크립트는 함수가 나오고 나서 부터 사람들 다 멘붕오고 그냥 반포기 상태로 코드를 줄줄 따라쓰는 것만 하는 듯 하다. 그래 함수라니.......이나이에 내가 함수라니!!!!!!!!!!!! 

하지만 웹개발이나 웹퍼블, 개발자가 아니라도 코딩을 일로 해야 하는 사람 입장에서는 함수를 모르면 그냥 끝인 것 같다........ 그래서 나도 이제 끝인건가..... 넘모 어려웡. 

변수의 경우 파이썬 공부 찔끔 하면서 대충 기본적으로 알고 있어서 다행이었는데, 이걸 진짜 첨보는 사람이라면 html, css 배우고 알고있다고 해도 바로 적용하기가 힘들것 같다. 정말 이게 기초적인게 맞는건가요 선생님.....? 무튼 오늘은 자바스크립트 함수 기초와 변수 종류 중 지역변수, 전역변수를 정리해보려고 한다. 너무 헷갈려서 구글링을 1시간 해서 겨우겨우 정리했다 후..... 나어떠카니..

*/

일단 함수를 사용해서 코드를 젖아한 것을 함수 정의문이라고 하는데, 변수 선언할 때 var을 먼저 사용한 것 처럼 함수에서는 funciton 키워드로 함수 변수를 선언한다. 즉

function 함수명(){
자바스크립트 코드;
}

여기서 {...} 안에 있는 코드는 바로 실행이 되지 않고 함수가 호출이 되면 실행이 된다. 호출을 하는 방법은 {}를 빠져 나와서 함수명(); 또는 참조변수();이다.

function 함수명(){
자바스크립트 코드;
}
함수명();

여기서 함수명을 변수라고 보면 되겠다. 이걸 몰라서 다른 사람들이 변수로 정해놓은 임의값을 엄청 구글링해댔네.........하.... 1일 1n삽질 인정.

무튼 여기서도 변수 종류가 나온다. 매개변수가 먼저겠지만, 오늘은 헷갈렸던 전역변수와 지역변수에 대해서 차이점을 알아보자.

전역변수 지역변수 알아보기

 

전역변수, 지역변수는 변수 유효한 범위에 따라서 나누어 질 수 있다. 전역변수는 함수 외부에서 선언된 변수로, 위의 코드에서 var hk 가 전역변수이다. 프로그램 전체에 접근을 할 수 있다. 반면에 지역변수는 함수 내부에서 선언이 된 변수이며 함수가 실행되고 종료되면 소멸한다. 함수 외부에는 접근을 할 수 가 없다.

즉 변수를 어디다 지정하느냐에 따라서 값이 달라지기 때문에 아주 중요하다고 할 수 있겠다.

코드를 살펴보면,

var hk="Lorem"; //전역변수 선언
function myFunc(){ //함수 선언(함수명은 myFunc()로 임의지정 
       var hk="Ipsum"; //지역변수 선언
       document.write(hk); //지역변수인 Ipsum 출력
     }
       document.write(hk); //전역변수인 Lorem 출력
       myFunc(); //지역변수인 Ipsum 출력

일단 var hk="Lorem"이 여기서 전역변수가 된다. 함수 외부에서 선언을 했고, 함수 외부에서 documnet.write(hk); 를 찍으면 전역변수인 Lorem이 출력된다.

반면에, 함수호출명인 function myFun(){ 부분에서는 함수 안에서 var hk="Ipsum"이라고 선언을 했기 때문에 당연하게 함수 안에서 document.write(hk);를 호출하면 지역변수인 Ipsum이 출력되고, 함수 밖에서 함수 호출명인 myFunc();의 경우에도 Ipsun이 출력된다. 함수 밖이지만 함수호출문으로 호출했기 때문에 지역변수인 Ipsum이 나오는 것이다.

개발자 도구로 보면 출력문이 자세히 나옴! 

 

아, 내가 말하면서도 헷갈리네...거참. 

아주 기초적인 부분인건 알겠지만 직접 적용을 하려고 하니까 망할 ..... .늠 으릅드.........

관련글 더보기

댓글 영역