JavaScript/다른 언어와의 관계
프로그래밍 경험이나 다른 언어로 교육받은 경험이 있다면 자바 스크립트를 배우는 것은 더 쉽기도, 동시에 더 어렵기도 하다. 특히 자바 또는 C++과 같은 언어에 익숙하다면 산술 및 제어 논리의 대부분은 동일하다.
변수의 동작
+/-변수 유효범위
+/-- 모듈과 모듈 사이에서
- 자바에서 키워드
public
,private
,protected
는 다른 모듈(클래스)에서 변수가 보일지 말지를 정의한다. 자바스크립트에는export/import
만 있다.module.exports/require
매커니즘을 사용한다. - 모듈 안에서
- 모듈 안에서 변수의 가시성은 키워드
let
과const
로 정의한다.(var
는 더 이상 쓰지 말자.) 자바스크립트const
는 자바final
과 같다. - 블록 안에서
- 코드를 중괄호로 감싼 것을 블록(Blocks)이라고 한다. 블록 안에서 정의한 변수는 블록 안 어디에서나 보이지만 블록 밖에서 정의한 것은 블록 안에서 안 보인다. 블록 가시성은 자바스크립트와 자바가 같다.
- 클로저
- 클로저(closure)는 익명 또는 이름 있는 함수로, 자신을 둘러싼 컨텍스트의 변수를 참조할 수 있다. 함수는 생성 시점의 변수 값은 볼 수 있지만 호출 시점의 값은 보지 못한다. 자바스크립트는 일찍부터 클로저를 사용했다. 자바도 내부 클래스와 람다 표현식으로 비슷한 기술을 사용한다.
클래스
+/-자바와 달리 자바스크립트에는 클래스가 없다. 대신 자바스크립트에서는 상속 같은 객체지향 기능을 구현하기 위해 프로토타입을 사용한다. 클래스를 따라할 수는 있지만 단지 ‘문법 설탕’일 뿐이다. 머리속에서 클래스를 지우면 자바스크립트를 더 쉽게 배울 수 있을 것이다.