This article is currently in the process of being translated into Korean (~99% done).
JavaScript and the webbrowser
많은 사람에게 자바스크립트와 웹브라우저는 매우 밀접한 관련이 있습니다. 자바스크립트는 원래 넷스케이프 네비게이터 웹브라우저 개발팀에서 만들었고 웹에서만 사용되었기 때문에 당연한 일입니다. 가장 일반적인 구현에서는 기본 파일 시스템 등에 대한 액세스를 제공하지 않는 대신 시스템과 관련이 없는 "좋은" 작업을 수행할 수 있는 샌드박스와 비슷하기 때문에 JavaScript를 "안전한 언어"라고 부르는 이유이기도 합니다.
하지만 자바스크립트는 웹브라우저 외부에서도 쉽게 사용할 수 있다는 점에 유의해야 합니다. 자바스크립트는 실행을 위해 자바스크립트 엔진 또는 인터프리터를 사용합니다. 이 엔진은 브라우저 내부에서 실행될 수 있으며 인류에게 알려진 거의 모든 최신 웹브라우저에서 실행되지만 브라우저 외부에서 실행되는 것을 막는 것은 없습니다. 실제로 이 작업은 여러 번 수행되었습니다.
노드 제이에스
가장 주목할 만한 예는 Node.js 프로젝트입니다. 2009년에 만들어진 이 프로젝트는 기본적으로 웹브라우저에서 자바스크립트 엔진을 분리하고 모듈을 추가하여 자바스크립트를 웹브라우저 스크립팅 언어가 아닌 다목적 프로그래밍 언어로 만들었습니다. 이제 웹(클라이언트 측)과 서버 측 스크립트 모두에 자바스크립트 기술을 사용할 수 있게 되면서 자바스크립트에 대한 새롭고 훨씬 더 높은 수준의 관심이 촉발되었습니다. 또한 Node.js는 크로스 플랫폼이기 때문에 브라우저 없이도 Windows, Linux, Unix 및 macOS에서 코드를 실행할 수 있게 되었습니다.
호스트 환경
이 모든 것이 호스트 환경에 대한 논의로 이어집니다. 호스트 환경은 자바스크립트가 실행되는 곳으로, 일반적으로 자바스크립트 언어에서 직접 찾을 수 없는 기능을 포함합니다. 가장 확실한 예는 물론 웹브라우저로, 자바스크립트 코드가 브라우저와 통신하고 기본 웹사이트의 콘텐츠를 조작할 수 있도록 많은 기능을 추가합니다.
또 다른 호스팅 환경은 서버 측 관련 기능을 추가하는 Node.js일 수 있지만, 자바스크립트는 원래 어디서나 실행할 수 있도록 설계되었으므로 커피 머신이 될 수도 있습니다. 자바스크립트 엔진을 쉽게 포함시키고 웹사이트 대신 푸시 버튼으로 커피를 만들고 지시를 받는 기능을 추가할 수 있습니다.
브라우저에서 혹은 브라우저 없이도
보시다시피 자바스크립트는 웹브라우저 외부에서 실행될 수 있습니다. 현재도 그렇고, 자바스크립트의 인기가 높아짐에 따라 앞으로는 더욱 그럴 것이라고 생각합니다. 따라서 이 튜토리얼에서는 무엇보다도 자바스크립트 언어를 배우는 것이 중요하다는 점을 강조하고 싶습니다.
따라서 이 튜토리얼의 첫 번째 부분에서는 실제 언어에 초점을 맞추고 브라우저와 상호 작용하는 방법에 대해 너무 많이 이야기하지 않겠습니다. 하지만 자바스크립트가 웹브라우저와 상호작용하는 방식을 완전히 무시하는 것은 어리석은 일이며, 이는 여전히 매우 일반적인 사용 사례이기 때문입니다. 따라서 이 튜토리얼의 후반부에서는 자바스크립트와 웹브라우저의 관계에 대해 더 자세히 살펴볼 것입니다.
순수주의자들을 위해 미리 알려드립니다: 튜토리얼의 첫 번째 부분에서는 브라우저를 사용하지 않지만 브라우저와 관련된 것으로 간주될 수 있는 몇 가지 함수를 사용하게 될 것입니다. 그 예로 브라우저에 간단한 메시지 상자를 표시하는 alert() 함수를 들 수 있습니다. 이 자습서에서 사용하는 예제에서 간단하고 이해하기 쉬우며 웹 브라우저에서 자습서를 읽고 웹 사이트에서 직접 예제를 실행할 때 볼 수 있는 결과를 생성하기 때문에 이 함수를 사용합니다.
요약
자바스크립트는 웹브라우저 내에서 실행되는 경우가 많지만 항상 그렇지는 않습니다. 이 튜토리얼에서는 먼저 핵심 자바스크립트 언어에 집중하여 언어를 익힌 다음 나중에 자바스크립트가 웹브라우저와 상호 작용하는 방법을 살펴볼 것입니다. 하지만 이해하기 쉽고 글을 읽으면서 테스트해 볼 수 있도록 브라우저와 약간 상호작용하는 예제를 보여드리겠습니다.