티스토리 뷰
728x90
반응형
0.정의
()가 없냐 있느냐에 따라 호출하는 방식과 그것이 의미하는 것이 달라진다.
일단 ()의 의미를 간단하게 실행이라고 생각하고 아래의 예제를 보자.
Source var serial_maker = function(){ var prefix=' '; var seq=0; return{ set_prefix:function(p){ prefix = String(p); }, set_seq:function(s){ seq = s; }, gensym:function(){ var result = prefix +seq; seq +=1; console.log(">>" + result); return result; } }; }; |
호출방법 var seqer = serial_maker(); seqer.set_prefix('Q'); seqer.set_seq(1000); serial_maker().gensym(); |
의미 Source를 보면 function이 끝나는 부분에 ()가 없다. 그 의미는 "function을 정의만 한다." 이다. 그래서 호출하는 방법을 보면 "serial_maker().gensym()" 으로 " 일단 serial_maker function을 한번 실행하고 function list를 리턴받고 다시 한번 리턴 받은 function중 하나인 gensym을 실행한다." 를 의미한다. 이것을 좀 더 의미 있게 해석을 하자면 이렇다. function을 위와 같이 정의하고 실행을 하게 되면 매번 새로운 object가 생기게 되고 매번 변수의 값이 initial값으로 리셋된다는 것이다. 어떤 object를 계속 유지하며, 변수의 내용을 가져다 쓰려면 이 방식은 맞지 않는 것 같다(내 생각) 그리고 이 function은 외부에 호출이 되기 전까지는 undefinded로 유지된다. |
2. () 가 있는 경우
Source var serial_maker = function(){ var prefix=' '; var seq=0; return{ set_prefix:function(p){ prefix = String(p); }, set_seq:function(s){ seq = s; }, gensym:function(){ var result = prefix +seq; seq +=1; console.log(">>" + result); return result; } }; }(); |
호출방법 serial_maker.gensym(); |
의미 Source를 보면 function이 끝나는 부분에 ()가 있다. 그 의미는 "function을 정의를 하고 실행을 해서 Return 값을 받는다." 이다. 그래서 호출하는 방법을 보면 "serial_maker.gensym()" 으로 " 이미 serial_maker function은 정의와 동시에 실행을 한 후에 function list를 리턴을 받은 상태이다. 그래서 바로 리턴받은 function중 하나인 gensym을 실행한다." 를 의미한다. 이것을 좀 더 의미 있게 해석을 하자면 이렇다. function을 위와 같이 정의하고 실행을 하게 되면 처음에 정의될 때 만들어진 새로운 object가 계속 유지되게 된다.그러므로 내부 변수의 값이 다시 리셋되지 않고 유지된다. 따라서 한 JSP page에서 이 function을 계속호출할 경우 seq +=1 때문에 숫자가 증가하는 것을 확인할 수 있다. 위로 미루어보아 당연한 이야기겠지만 이 function은 ()를 interpreter가 읽는 순간 undefinded에서 object가 생성된다. |
반응형
'IT > JavaScript' 카테고리의 다른 글
LET/CONST는 호이스팅이 안된다? (0) | 2022.05.04 |
---|---|
구조 분할 할당 (Destructuring assignment) (0) | 2022.03.23 |
Javascript String 속도 비교 (0) | 2012.08.10 |
new 메소드( Function을 new하게 되면 안에서 행해지는 모습들) (0) | 2012.08.10 |
[Javascript] This 의 영역 정의 (1) | 2012.08.10 |
댓글
250x250
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 옥빌
- 토론토정착서비스
- TORONTO
- 부모님초청이민
- 인터넷
- RHEL
- ansible
- Jay
- BC주
- cert
- Canada
- RHCE
- 우드워킹
- Certificate
- 캐나다
- 부동산분석
- git proGit
- redhat
- 정착서비스
- 토론토
- 밀튼
- Red Hat
- basement
- 미시사가
- 캐나다부동산
- docker
- certification
- 온타리오
- BTBS
- 벌링턴
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함