Total: Today: Yesterday:
개발/JavaScript | 2015. 5. 29. 11:36 | Posted by 알 수 없는 사용자

당연하게 Rest Api에서 받아오는 Json Data를 callback 함수로 사용하다가 문득 변수를 선언하지 않고 전달하는 callBack함수 결과 자체를 변수로 사용할 수 있는것에 의문점을 가지고 생각해보았다.

 
function test(call){
	callbackTest(call, function(result){
		callResult = result;
	});
	console.log('callResult : ' +callResult);
}

function callbackTest(call, callback){
	callback(call);
}


결과는 다음과 같다.



test() 블록 안에서 var callResult를 선언하지 않아도 callResult 변수는 정상 동작 한다.

자바 스크립트는 블럭의 의미가 없다.

가장 가까이에서 선언된 변수를 찾아서 사용되고 있을 뿐이다.

callbackTest ()가 여러개 선언되어있을 때 가장 가까운 블럭의 callback에서의 변수 callResult를 찾아서 사용하였다.

원하는 변수를 찾기가 어려워진다.

다른 함수에서 test()함수를 선언 후 callResult를 호출하여도 test()블록 안에 function에서 사용한 callResult 변수가 사용되었다.

test블록 내에서 사용하는 _callResult변수를 사용하니 write()안에서는 에러가 발생한다.


변수 선언 안해도 가까운 블럭 내에 있는 변수를 사용하여 편리하지만 예상치 못한곳에서 사용될 수 있으니 적절히 선언해서 사용해야 겠다.