본문으로 이동

JavaScript/다른 언어와의 관계

위키책, 위키책

프로그래밍 경험이나 다른 언어로 교육받은 경험이 있다면 자바 스크립트를 배우는 것은 더 쉽기도, 동시에 더 어렵기도 하다. 특히 자바 또는 C++과 같은 언어에 익숙하다면 산술 및 제어 논리의 대부분은 동일하다.

변수의 동작

[+/-]

변수 유효범위

[+/-]
모듈과 모듈 사이에서
자바에서 키워드 public, private, protected는 다른 모듈(클래스)에서 변수가 보일지 말지를 정의한다. 자바스크립트에는 export/import만 있다. module.exports/require 매커니즘을 사용한다.
모듈 안에서
모듈 안에서 변수의 가시성은 키워드 letconst로 정의한다.(var는 더 이상 쓰지 말자.) 자바스크립트 const는 자바 final과 같다.
블록 안에서
코드를 중괄호로 감싼 것을 블록(Blocks)이라고 한다. 블록 안에서 정의한 변수는 블록 안 어디에서나 보이지만 블록 밖에서 정의한 것은 블록 안에서 안 보인다. 블록 가시성은 자바스크립트와 자바가 같다.
클로저
클로저(closure)는 익명 또는 이름 있는 함수로, 자신을 둘러싼 컨텍스트의 변수를 참조할 수 있다. 함수는 생성 시점의 변수 값은 볼 수 있지만 호출 시점의 값은 보지 못한다. 자바스크립트는 일찍부터 클로저를 사용했다. 자바도 내부 클래스와 람다 표현식으로 비슷한 기술을 사용한다.

클래스

[+/-]

자바와 달리 자바스크립트에는 클래스가 없다. 대신 자바스크립트에서는 상속 같은 객체지향 기능을 구현하기 위해 프로토타입을 사용한다. 클래스를 따라할 수는 있지만 단지 ‘문법 설탕’일 뿐이다. 머리속에서 클래스를 지우면 자바스크립트를 더 쉽게 배울 수 있을 것이다.