목록JavaScript (28)
Amarans
함수를 호출하는 가장 기본적인 방법 function func(){ } func(); JavaScript는 함수를 호출하는 특별한 방법을 제공한다. 본 토픽의 시작에서 함수를 객체라고 했다. 위의 예제에서 함수 func는 Function이라는 객체의 인스턴스다. 따라서 func는 객체 Function이 가지고 있는 메소드들을 상속하고 있다. 지금 이야기하려는 메소드는 Function.apply과 Function.call이다. Function.apply function sum(arg1, arg2){ return arg1+arg2; } alert(sum.apply(null, [1,2])) 결과값 : 3 ============================================================..
function sum(){ var i, _sum = 0; for(i = 0; i < arguments.length; i++){ document.write(i+' : '+arguments[i]+' '); _sum += arguments[i]; } return _sum; } document.write('result : ' + sum(1,2,3,4)); 결과 = 10 1+2+3+4 함수 sum은 인자로 전달된 값을 모두 더해서 리턴하는 함수다. 그런데 1행처럼 함수 sum은 인자에 대한 정의하가 없다. 하지만 마지막 라인에서는 4개의 인자를 함수 sum으로 전달하고 있다. 함수의 정의부분에서 인자에 대한 구현이 없음에도 인자를 전달 할 수 있는 것은 왜 그럴까? 그것은 arguments라는 특수한 배열이 있..
아래 예제는 클로저를 이용해서 영화의 제목을 저장하고 있는 객체를 정의하고 있다. 실행결과는 Ghost in the shell -> Matrix -> 공각기동대 -> Matrix 이다. function factory_movie(title){ return { get_title : function (){ return title; }, set_title : function(_title){ title = _title } } } ghost = factory_movie('Ghost in the shell'); matrix = factory_movie('Matrix'); alert(ghost.get_title()); alert(matrix.get_title()); ghost.set_title('공각기동대'); ale..
클로저(closure)는 내부함수가 외부함수의 맥락(context)에 접근할 수 있는 것을 가르킨다. 클로저는 자바스크립트를 이용한 고난이도의 테크닉을 구사하는데 필수적인 개념으로 활용된다. 내부함수 자바스크립트는 함수 안에서 또 다른 함수를 선언할 수 있다. 아래의 예제를 보자. 결과는 경고창에 coding everybody가 출력될 것이다. function outter(){ function inner(){ var title = 'coding everybody'; alert(title); } inner(); } outter(); 위의 예제에서 함수 outter의 내부에는 함수 inner가 정의 되어 있다. 함수 inner를 내부 함수라고 한다. 내부함수는 외부함수의 지역변수에 접근할 수 있다 funct..
function cal(func, num){ return func(num) } function increase(num){ return num+1 } function decrease(num){ return num-1 } alert(cal(increase, 1)); alert(cal(decrease, 1)); 10행을 실행하면 함수 increase와 값 1이 함수 cal의 인자로 전달된다. 함수 cal은 첫번째 인자로 전달된 increase를 실행하는데 이 때 두번째 인자의 값이 1을 인자로 전달한다. 함수 increase은 계산된 결과를 리턴하고 cal은 다시 그 값을 리턴한다. 결과값 : 2 : 0 -----------------------------------------------------------..
for(var i = 0; i < 1; i++){ var name = 'coding everybody'; } alert(name); 결과값 : coding everybody for(int i = 0; i < 10; i++){ String name = "egoing"; } System.out.println(name); 자바에서는 아래의 코드는 허용되지 않는다. name은 지역변수로 for 문 안에서 선언 되었는데 이를 for문 밖에서 호출하고 있기 때문이다. 자바스크립트의 지역변수는 함수에서만 유효하다. ------------------------------------------------------------------------------------------------------------------..
지역변수의 사용 function a (){ var i = 0; } for(var i = 0; i < 5; i++){ a(); document.write(i); } 결과값 : 01234 전역변수의 사용 function a (){ i = 0; } for(i = 0; i < 5; i++){ a(); document.write(i); } 결과값 : 무한반복 한다. ============================================================================ 불가피하게 전역변수를 사용해야 하는 경우는 하나의 객체를 전역변수로 만들고 객체의 속성으로 변수를 관리하는 방법을 사용한다. MYAPP = {} MYAPP.calculator = { 'left' : null, 'ri..
유효범위(Scope)는 변수의 수명을 의미한다. 아래의 예제를 보자. 결과는 global이다. var vscope = 'global'; function fscope(){ alert(vscope); } fscope(); 함수 밖에서 변수를 선언하면 그 변수는 전역변수가 된다. 전역변수는 에플리케이션 전역에서 접근이 가능한 변수다. 다시 말해서 어떤 함수 안에서도 그 변수에 접근 할 수 있다. 그렇기 때문에 함수 fscope 내에서 vscope를 호출 했을 때 함수 밖에서 선언된 vscope의 값 global이 반환된 것이다. 아래 예제를 보자. 결과는 '함수안 local'과 '함수밖 global'이 출력된다. var vscope = 'global'; function fscope(){ var vscope =..