더북(TheBook)

배열 데이터를 SVG 경로(path)로 변환하는 함수다. SVG 경로는 SVG 언어로 국한하면 단순한 문자열에 지나지 않는다. 그림 1-3 같은 라인을 그린다고 하자.

►그림 1-3

 

SVG <path>요소는 다음과 같다.

<path d="M10,130L100,60L190,160L280,10"></path>

말로 풀면 다음과 같다. “펜을 들어 (x, y)좌표가 (10, 130)인 지점으로 이동("M ")한 뒤 (100, 60)까지 선("L ")을 그리고, 또 (190, 160)까지 선을 그리고, 마지막으로 (280, 10)까지 선을 그리시게. ”

예제 1-1 코드로 경로를 그리려면 예제 1-2처럼 호출한다.

 

예제 1-2 rj3.svg.line() 호출부 예시

소스 파일 1장 \rj3\pathFromArrays.js

var arrayData = [
      [10,130],
      [100,60],
      [190,160],
      [280,10]
    ],
    lineGenerator = rj3.svg.line(),
    path = lineGenerator(arrayData);
 
document.getElementById('pathFromArrays').setAttribute('d',path);
}());

 

굵게 표시된 lineGenerator에는 어떤 값이 할당될까? 예제 1-1 마지막 줄에서 rj3.svg.line()의 반환값은 line으로, 바로 외부 함수(outer function) rj3.svg.line의 내부에 중첩된 함수다!

TIP

자바스크립트 함수는 다른 함수 내부에 중첩될 수 있으며, 이는 스코프를 다스리는 중요한 수단이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.