분류 전체보기 (662) 썸네일형 리스트형 12. Javascript 클로저(Closure)(2) - 클로저의 활용 1 지금까지 알아본 클로저의 개념을 잘 이해하고 따라오셨나요? 그렇다면 이제 이 클로저라는 특별한 함수를 어떻게 사용하는지, 그 예제를 함께 확인해 볼 차례입니다. 우선, 아래와 같은 예제 코드가 있다고 해봅시다. function HelloFunc() { this.greeting = "hello_World!"; } HelloFunc.prototype.call = function(func) { func ? func(this.greeting) : this.func(this.greeting); }; var userFunc = function(greeting) { console.log(greeting); }; var ojbHello = new HelloFunc(); ojbHello.func = userFunc; o.. "먹은게 소화가 안돼요. 토할 것 같아요." 영어로 표현해 봅시다 오늘 배워볼 표현은 바로 일상생활에서 흔히 사용하게 되는 '소화'와 관련된 표현입니다. 우리는 생각보다 자주 먹은 게 소화가 안된다거나, 속이 불편하다 라는 표현을 할 때가 많습니다. 비단 심각한 병이나 증상을 설명하는 경우가 아니더라도, 가볍게 컨디션을 얘기하거나 식사 약속을 피할 때 적당한 핑계로 사용하기도 하는 표현입니다. 그런데 막상, 영어로 표현하려고 하면 잘 생각이 나지 않는 표현이기도 합니다. '위가 아프다?'라고 표현해야 하나, '토할 것 같다'는 어떻게 표현하지? '속이 불편하다'는 그냥 uncomfortable 인가? 온갖 고민이 머릿속을 휘젓게 되기 마련입니다. 물론 요즘에도 영어로 표현할 때 '오바이트'를 사용하는 분들은 없을 것이라 생각합니다(ㅎㅎ). 그럼 몇 가지 머릿속에 떠오르.. 12. Javascript 클로저(Closure)(1) - 클로저의 정의 3 이제 앞서 살펴본 클로저의 정의와 기본 예제를 바탕으로 조금 더 복잡한(?) 예시를 살펴보도록 하겠습니다. 파라미터 값 등이 추가된 예제이지만, 본질적으로는 앞에서 배우며 살펴본 클로저의 원칙에서 벗어나지 않기 때문에 반복해서 코드를 작성해보시면 금방 익숙해질 수 있는 내용입니다. function outerFunc(arg1, arg2) { var local = 8; function innerFunc(innerArg) { console.log( (arg1 + arg2) / (innerArg + local) ); } return innerFunc; } var exam1 = outerFunc(2, 4); exam1(2); 우선 위 예제를 잘 읽어봅시다. outerFunc( )라는 함수 내부에 내부 함수 inn.. 12. Javascript 클로저(Closure)(1) - 클로저의 정의 2 이번 아티클에서는 앞서 살펴본 클로저의 정의에 해당하는 예제를 살펴보도록 하겠습니다. 우선, 아래의 예제 코드를 살펴보고 결과 값을 예측해보도록 합시다. function outerFunc() { var x = 10; var innerFunc = function() { console.log(x); }; return innerFunc; } var inner = outerFunc(); inner(); 앞서 살펴본 클로저 예제 유형과 비슷하면서도, 함수를 리턴하는 형식이 추가되었기 때문에 조금 어렵게 느껴집니다. 위 예제를 실행 컨텍스트와 변수 객체의 도식화를 통해서 표현하면 다음과 같습니다. 도식에 대한 설명은 차근차근 짚어나갈 테니, 바로 이해가 가지 않는다고 너무 걱정하지 맙시다. 간단하지만, 개념이 아직.. 12. Javascript 클로저(Closure)(1) - 클로저의 정의 1 Javascript에서 클로저는 나름대로 중,고급(?)단계로 진입하기 위한 가장 큰 장벽이자 숙제인 개념입니다. 만일 프로그래밍 언어에 익숙하신 분들이라면 다른 언어와 조금 차별화되는 개념일지라도 이 개념의 맥락과 용도만 이해한다면 어렵지 않게 학습할 수 있는 내용이지만, Javascript를 통해 프로그래밍 언어를 처음 접하신 분들이라면 다소 어렵게 느껴질 수 있는 개념입니다. (지금까지도 그래왔지만) 이번 아티클에서는 Javascript를 첫 프로그래밍 언어로 학습하고 계신 분들이 읽고 있다고 가정하고 가능한 자세히 차근차근 설명을 진행해 보도록 하겠습니다. 클로저(Closure)의 개념 우선은 클로저가 무엇인지, 간단히 정의를 내려보고 설명을 진행해 보도록 하겠습니다. 우선, 단어만 듣고 보면 왜 .. "그거 아버지한테 물려받은 거예요." 영어로 표현해 봅시다 오늘 배워볼 표현은 흔히 말하는 '물려받다'와 관련된 표현입니다. 아마 일상생활에서도 흔히 쓰게 되는 표현임에도 불구하고, 막상 표현하려고 하면 알맞은 단어를 찾기가 어렵습니다. 특히, 영어를 열심히 공부하신 분들의 경우 주로 법률적 용어 또는 기사 등에서 찾아볼 수 있는 "상속하다(받다)"와 관련해서 영어 표현을 접하신 분들이 많을 것 같네요. 한국어로 표현할 때, 무엇인가를 '상속하다'와 '물려받다'는 약간 다른 의미를 내포하는 경우가 많습니다. '상속'은 주로 법률적인 용어의 느낌이 강하고, 토지나 주택을 의미하는 경우가 많습니다. '물려받다'의 경우는 옷이나 가방, 일상 용품 등에서 가벼운 의미로 사용되는 경우가 많죠. 그래서 무의식적으로 '상속'을 그대로 써도 괜찮을까? 하는 우려가 들기도 합니.. 11. Javascript 실행 컨텍스트(4) - 스코프 체인 3 앞서 살펴본 예제 코드의 구성과 거의 동일하지만, 약간의 선언 구조만 다른 예제를 통해 스코프 체인의 중요한 성질 하나를 더 살펴보도록 하겠습니다. 우선, 결론만 요약하여 설명하면 아래와 같습니다. * 실행 컨텍스트는 함수의 실행 시점에 생성된다. * 단, 변수 객체의 스코프 체인은 해당 함수 객체의 생성(선언) 시점에 따라 형성된다. 문장만 봐서는 무슨 의미인지 선뜻 감이 오지 않으실 겁니다. 이제 앞에서 살펴본 예제와 새로운 예제를 비교해 실행해 보겠습니다. 아래 코드는 바로 직전 아티클에서 실행 컨텍스트와 변수 객체의 구조를 알아보기 위해 작성했던 코드입니다. 여기서 함수 printValue( )는 printFunc( ) 함수의 내부 함수로서 선언되어 있는 구조입니다. var value = "val.. 11. Javascript 실행 컨텍스트(4) - 스코프 체인 2 앞서 살펴본 스코프 체인의 예시를 통해, 어렴풋이나마 스코프 체인이 어떻게 작동하는지 살펴보았습니다. 아마 기본적인 내용은 이해가 갔으리라 생각합니다. 그럼, 내부 함수가 포함된 다음의 예제를 살펴보고 결과를 예측해 봅시다. var value = "value1"; function printFunc() { var value = "value2"; function printValue(){ return value; } console.log(printValue()); } printFunc(); 우선 위 예제의 실행 컨텍스트 형성과 변수 객체, 그리고 스코프 체인을 도식화해서 살펴보고 결과가 어떻게 출력될지 확인해 보도록 하겠습니다. 우선 위의 경우는 함수의 선언과 실행을 잘 구분하여 살펴봐야겠습니다. 전역 컨텍스.. 이전 1 ··· 69 70 71 72 73 74 75 ··· 83 다음