[JavaScript] 주의해야 할 ‘변수에 대한 호이스팅(hoisting)’

자바스크립트에서 변수에 대한 호이스팅이라는 개념이 있습니다. 함수 안에 정의된 모든 변수는 선언된 그 위치에 상관없이 함수의 윗부분으로 끌어올려(hoist)된다라는 개념입니다. 여기서 주의할 점은 자바스크립트에서 함수도 객체 변수이며 이 함수가 호이스팅될때입니다.. 함수를 정의하고 선언하는 방법을 크게 2가지로 구분할 수 있습니다.

  • 표현식에 의한 정의
  • 선언문에 의한 정의

먼저 표현식에 의한 정의의 예는 다음과 같습니다.

var bar = function() {
     // 표현식에 의한 함수 정의 
}; 

다음은 선언문에 의한 정의의 예입니다.

function foo() { 
    // 선언문에 의한 함수 정의
} 

이러한 함수 정의가 함수 안에서 이루어질때 호이스팅에 차이가 발생하게 됩니다.

function test() { 
    alert(typeof foo); 
    alert(typeof bar); 

    function foo() { 
        // 선언문에 의한 함수 정의 
    } 
    
    var bar = function() {
         // 표현식에 의한 함수 정의 
    }; 
} 

test();

위의 코드를 실행해 보면 처음에는 “function”이라는 메세지가 표시되고 다음에는 “undefined”라는 메세지가 표시됩니다. 이는 표현식에 대한 함수 정의시에 함수 객체가 호이스팅될때 함수의 코드부분은 호이스팅되지 않지만 선언문으로 함수가 정의될 경우에는 함수의 코드부분까지도 호이스팅된다는 것을 알 수 있습니다. 

[Android] ProgressDialog의 메세지(Message) 폰트 크기 키우기

안드로이드에서 사용자에게 잠시 기다려 줄 것을 요청하는 방법 중 하나로 ProgressDialog를 사용합니다. 그런데 이 ProgressDialog에 표시되는 메세지의 폰트가 쥐불알만합니다..

사용자 삽입 이미지
해서 이 폰트를 전체적인 화면과 어울리게 좀 키워보려고 했고, 그 방법 중에 가장 간단한 방법은 다음과 같습니다.

inkTaskProgressDlg = ProgressDialog.show(
    DASSActivity.this, 
    "펜 메모 준비",
    Html.fromHtml("지도 이미지에 대한 펜 메모를 준비 중입니다. 잠시만 기다려 주세요.."), 
    true, 
    false);

네, 바로 Html.fromHtml를 이용해 텍스트에 스타일을 지정하는 방법입니다. HTML 방식으로 문자 스타일을 지정하니 색상이며 굵기등도 지정이 가능합니다. 안드로이드… 상당히 쓸만한 물건이라는 생각입니다. 위의 코드에 대한 결과는 아래와 같습니다.

사용자 삽입 이미지
다음 주 정도 지자체에 안드로이드 기반의 현장지원시스템을 납품합니다(담당자 분의 납품 승인을 받아야 할텐데.. -_-;). 거즘… 마무리하고 소소하지만 중요한 사용자 편의성을 다듬어 보면서 얻은 내용을 정리해 봅니다.