이 글은 저서 [인사이드 자바스크립트]를 공부하고자 작성되었으며, 핵심 개념과 새롭게 알게 된 내용을 위주로 기록하였습니다.
자바스크립트는 웹 브라우저에서 동작하는 스크립트 언어
이다.
소스 코드를 컴파일(Compile)하지 않고도 실행할 수 있는 프로그래밍 언어이다.
별도의 컴파일 없이 내장된 번역기에 의해 번역 되므로 바로 실행 할 수 있다.
스크립트 언어는 소스를 작성한 후 컴파일 과정 없이 바로 실행하여 결과를 확인할 수 있다는 장점이 있는 반면에 번역 과정을 거쳐야 하기 때문에 다소 느리다는 단점이 있다.
C언어나 Java와 같은 비스크립트 언어의 경우 실행 속도가 빠른 장점이 있는 반면 컴파일 과정을 거쳐야 하는 등 개발 과정이 조금 복잡하다는 단점이 있다.
(출처: https://jokergt.tistory.com/81 [Gun's Knowledge Base:티스토리])
js는 클래스라는 개념이 없다.
그래서 기존 객체를 복사(cloning)해 새로은 객체를 생성하는 프로토타입 기반의 언어다.
프로토타입을 이용해 상속 기능을 흉내내도록 구현되었다.
클래스 대신 함수(function)과 new를 통해 클래스를 비슷하게 흉내낼 수 있다.
이해가 잘 가지 않아서 이미지를 찾아보았다.
java의 생성자 같은 느낌인걸까?? ... 아직까진 잘 감이 안온다.
(출처 : https://velog.io/@wmc1415/Javascript-Prototype%EC%9D%B4%EB%9E%80)
js에선 거의 모든 것이 객체다.
js에선 함수
도 객체다.
함수는 일급 객체(first class object)로 다뤄진다.
js는 클래스를 지원하지 않지만 객체 지향 프로그래밍이 가능하다.
프로토타입 체인과 클로저로 상속, 캡슐화, 정보 은닉 등의 개념 소화 가능
모듈화
가능한 효율적인 프로그래밍 방법가독성
이 떨어질수있다. 유연성 : js는 매우 유연한 언어이다. 뛰어난 표현력을 가진다. 하지만 디버깅이 어렵다.
느슨한 타입 체크 : 타입 체크에 대한 자유를 제공, 덕분에 컴파일 타임에서 잡지 못한 오류갸 그대로 런타임 오류로 발견된다. 이때문에 실무에선 보통 typeScript를 사용하는 것이라고 알고있다.
전역 객체의 존재 논란
최상위 레벨의 객체들은 모두 전역 객체 안에 위치하는데, 이는 이름 충돌의 위험이 있다. 그러므로 프로그래머가 이름 작명에 신경써야한다.
(음 아직 무슨 말인지 잘 모르겠다)