스크립트는 모듈이 아니다
바로 지난주 우리는 특수한 사용자 입력 장치를 제작하는 모 회사의 웹 사이트를 보았다. 다행히 이 회사는 자사 제품을 사용해볼 수 있도록 자바스크립트 예제 코드를 제공했다.
엄마야! 개발자들에게 배포한 이 자바스크립트 라이브러리는 1, 900줄에 달했고, 총 200개가 넘는 전역 함수를 또 다른 전역 변수/함수가 꼬리에 꼬리를 물고 있었다. 전역 함수는 대부분 최소한으로 이름 붙여 다른 라이브러리와 충돌 가능성은 적었지만, makeUri나 toHex처럼 그렇지 않은 경우도 있었다.
이는 전형적인 자바스크립트 ‘스크립팅’의 유물이다. 한 페이지에 스크립트가 하나밖에 없던 시절에는 전역 이름공간(namespace)에 함수를 추가해도 별 탈이 없었다. 요즘 자바스크립트 애플리케이션에서는 어림도 없는 소리다.
여러분이 작성한 스크립트는 이 스크립트가 담긴 .js 파일 안에 담겨 있으니 어떤 경우라도 완전 분리는 불가능하다. 파일 첫 부분이 이렇게 시작하면,
var myVariable = makeValue();
myVariable은 같은 애플리케이션의 다른 스크립트에서도 볼 수 있고 makeValue함수도 마찬가지다.
자바스크립트는 데이터와 함수를 적절히 캡슐화한 모듈을 만드는 조리법이 매우 다양하다. 스크립트 파일은 그런 조리법이 아니다(데이터 캡슐화는 3장에서 자세히 다룬다)!