자바스크립트의 장점

chrisjune
chrisjune
Published in
3 min readMay 6, 2019

더글라스 크락포드의 자바스크립트 핵심가이드를 정리한 문서입니다.

총 10장으로 이루어진 책으로 한 장씩 정리하여 포스팅할 예정입니다.

본 책은 자바스크립트의 좋은 점만을 정리한 책으로, 나쁜 점을 잊어야 할 수고를 덜 수 있습니다.

1. 왜 자바스크립트인가?

자바스크립트는 가볍고 놀라운 표현력을 가진 프로그래밍 언어로서, c와 자바와 같은 언어와는 다른 표현 방식을 사용합니다.

모든 브라우저에서 사용가능한 유일한 언어입니다.

2. 좋은점

2–1) 함수는 어휘적인 유효범위를 가진 일급 객체입니다.

  • 어휘적인 유효범위는 다른 용어로, lexical scope 또는 정적 스코프라고도 부릅니다. 자바스크립트에서 유효범위는 선언할때 생깁니다. 실행될때의 상황이 아니라 선언한 범위에서 값을 참조한다는 뜻입니다.
var name = 'outside'; function print() {   
console.log(name);
}
function func() {
name = 'inside';
print();
}
func();
  • 실행 결과는 무엇일까요? print 전에 전역변수인 name 값을 바꾸었기 때문에 inside가 출력됩니다. 그러면 아래는 어떻게 될까요?
var name = 'outside';function print() {   
console.log(name);
}
function func() {
var name = 'inside';
print();
}
func();
  • 위의 결과는 동일하게 inside가 출력될까요? 아닙니다. outside가 출력됩니다. 왜냐하면, print()함수에서 name은 전역변수인 name을 가르키고 있기 때문입니다. 따라서 func()에서 함수 지역변수인 name을 선언하여도 전혀 영향을 주지 않습니다.

함수는 일급객체입니다.

  • 일급객체는 함수를 변수처럼 대입, 매개변수(인자)로 전달, 연산에 사용 그리고 반환값을 사용가능한 객체를 의미합니다.

2–2) 느슨한 타입체크

자바스크립트는 변수타입을 지정해주지 않습니다. 따라서 타입오류가 발생하지 않습니다. 자바와 같이 강한 타입체크가 실질적이고 중요한 오류를 효율적으로 제거해주지 못하는 것이 검증되었기 때문입니다. 또한, 타입캐스팅에 대한 고민이 필요하지 않습니다

2–3) 객체 표기법(리터럴 객체 표기법)

자바스크립트에서는 클래스가 존재하지 않습니다. 단, 객체리터럴 표기법으로 객체를 생성하고 이를 모델화 할 수 있습니다. 객체는 json형식과 거의 동일합니다

// 자바스크립트에서 객체 생성예
var PersonalInfo= {
name: 'cjy',
residence: 'Seoul'
}
// 파이썬에서 클래스 생성예
class PersonalInfo:
name = 'cjy'
residence = 'Seoul'

3. 나쁜점

전역변수에 기초를 하고 있습니다. 이는 메모리 성능관리를 어렵게 만들고, 코드양이 많아 질 수록 객체의 충돌을 일으킬 수 있습니다.

--

--