Study/JavaScript

생활코딩 JavaScript - closure, argument

posey 2023. 2. 8. 20:10

 

  • 생활코딩 JavaScript - closure, argument



Review
 
 
 오늘 코딩 스터디를 하기로 한 첫 날이다.
첫 날이라 어떤 방향으로 공부를 해야할지 회의를 진행했다.
다들 자바스크립트가 최대의 난제라고 말했다. 나는 원래 퍼블리셔로 취업한 후에 
프론트엔드 개발자로 전향하는 것이 우선의 목표였는데, 오늘 회의를 하고 나서 처음부터 
프론트엔드 개발자로 취업하는 것을 노려보기로 했다.
 
사실 비전공자가 프론트엔드 신입 개발자로 취업하기는 정말 힘들 것이라는 걸 알지만, 
퍼블리셔의 경력이 프론트엔드 개발쪽으로 전향할 때에 전혀 도움이 되지 않는다는 걸
알게 되었다. 사람인에서 공고를 보다보면 퍼블리셔는 디자인 업무가 주이고 코딩, 기획
까지 모두 해내야 한다는 것을 알 수 있다.
사실상 웹 디자이너가 HTML, CSS, JavaScript를 모두 해내야 하고 심지어 php까지 바라
는 회사도 종종 있다. 참 당황스러운 일이다.
 
우선 다음주 스터디에서 자바스크립트를 공부한 후에 자신이 공부한 것을 직접 설명하고,
예제도 겸해서 함께 실습해보기로 했다. 
취업 걱정이 많지만 우선 내가 해야만 하는 일에 더 집중하기로 했다. 
차차 고민해보고 현명한 결정을 내려야겠다.
 
파이팅 - !
 
 
 


 

  • 생활코딩 JavaScript - closure, argument

 
 
<closure란?>
 
클로저(closure)는 내부함수와 밀접한 관계를 갖고 있다. 
내부함수는 외부함수의 지역변수에 접근할 수 있고, 외부함수의 실행이 끝나고 나서
외부함수가 소멸된 이후에도 외부함수의 변수에 접근할 수가 있다.
 
 
 
<내부함수>
 
: JavaScript는 함수 안에서 또 다른 함수를 선언할 수 있다.
 

fuction outer() {
	function inner() {
        var title = 'coding everybody';
        alert(title);
    }
    inner();
}
outer(); //결과는 경고 창에 coding everybody로 출력됨

 
위의 예제에서 함수 outer의 내부에는 함수 inner가 정의되어 있다.
함수 inner를 내부함수라고 한다.
내부함수는 외부함수의 지역변수에 접근할 수 있다.
 
내부함수 inner에서 title을 호출했을 때 외부함수인 outer의 지역변수에 접근할 수 있다.
 
 
 
 
<argument(인수)란?>
 
:인수(argument)란 함수가 호출될 때 함수로 값을 전달해주는 값을 말한다.
함수에는 arguments 라는 변수에 숨겨진 유사 배열이 있다.
이 배열에는 함수를 호출할 때 입력한 인자가 담겨있다.
 

function sum() {
    var i, _sum = 0;
    for(i = 0; i < arguments.length; i++) {
    document.write(i + ' : ' + arguments[i] + '<br>');
    _sum += arguments[i];
}
	return _sum;
}
document.write('result : ' + sum(1,2,3,4)); //결과는 10

 
argument가 하는 일은
1. length를 통해 이 객체를 포함하고 있는 함수가 몇 개의 인자를 갖고 있는지 알 수 있다.
2. argument[i] 이 대괄호 안에다가 index 값을 전달하는 것을 통해 sum으로 들어온 인자의
특정 자릿수의 값을 알아낼 수 있다.
 
 


 
<매개변수의 수>
 
: 매개변수와 관련된 두 가지의 수가 있다.
하나는 함수 length, 다른 하나는 arguments.length이다.
함수 length는 함수에 정의된 인자의 수를 의미하고,
arguments.length는 함수로 전달된 실제 인자의 수를 의미한다.
 

반응형