[도서] 자바스크립트 핵심 가이드 #1

getch_·2020년 7월 28일
0

javascript

목록 보기
1/2
post-thumbnail

자바스크립트 핵심 가이드 1장

1장 자바스크립트의 좋은 점들

개요

  • 어떻게 하면 나쁜 점을 피해서 좋은 결과를 얻느냐는 것
  • 언어의 기능들이 어떻든 간에 자신만의 부분집합을 지정할 수 있다는 것
  • 동적 언어로서 두드러진 특성과 장점을 부각하기 위해 집필
  • 책에서 제시하는 정제된 언어의 부분집합은 보다 신뢰할 수 있고 유지가 용이한 좋은 언어적 특성을 나타낼 것
  • 책에는 자바스크립트의 좋은 점에만 초점을 맞춤
  • 전문가를 위한 자바스크립트의 부분집합을 다룸

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

  • 자바스크립트는 가장 유명하고 중요하지만 가장 무시당하고 있는 언어 중 하나
  • DOM(Document Object Model)은 아주 형편없기 때문에 책에서는 아주 적은 부분만 언급
  • 자바스크립트의 놀라운 점은 언어 자체에 대해 많이 모르거나 심지어는 프로그래밍에 대해 잘 모르더라도 원하는 작업을 할 수 있다는 것
    • =놀라운 표현력을 가진 언어

02. 자바스크립트 분석

  • 좋은 아이디어
    • 함수
    • 느슨한 타입 체크
    • 동적 객체
    • 표현적인 객체 리터럴 표기법
  • 나쁜 아이디어
    • 전역변수에 기초(대표적)

  • 함수
    • 어휘적 유효범위를 가진 일급 객체(first-class object)
    • 주류가 된 첫 번째 람다(lambda) 언어
    • C의 옷을 입은 Lisp 언어라고 할 수 있음
  • 느슨한 타입체크
    • 오류 찾기의 어려움(X)
    • 자유로움(O)
      • 복잡한 클래스 계층에서 자유롭고, 타입 캐스팅과 씨름할 필요도 없음
  • 표현적인 객체 표기법
    • 매우 강력한 객체 리터럴 표기법
    • 데이터 교환 형식인 JSON에 영감을 제공

  • 논란
    • 프로토타입에 의한 상속
      • 클래스가 필요 없는 객체 시스템이 있어 특정 객체에 있는 속성들을 다른 객체에 직접 상속할 수 있음
      • 설계 패턴의 패러다임을 전환할 필요
        • 클래스 > 객체

  • 전역변수
    • 몇몇 비난을 받는 핵심 개념 중 특별히 잘못 선택된 점
    • 최상위 레벨의 변수들은 모두 전역객체(global obejct)라 불리는 공용 이름 공간(namespace)에 위치

      추가적인 나쁜 점들은 나올 때마다 언급 또는 부록 A에 정리


  • 자바스크립트 표준은 "ECMAScript"로 나쁜 부분을 포함하기때문에 책에서는 기술하지 않음
  • 일급 객체(first-class object): 언어상에 제약이 없는 객체, 변수에 대입되거나 인수로 전달할 수 있고, 반환값 및 연산 등에 사용하는데 전혀 제약이 없는 객체
  • 람다(lambda): 람다 대수에서 유래한 것으로 익명 함수나 클로저 등을 정의하기 위한 표현식을 의미, 더 자세한 사항은 Lisp나 파이썬에서 람다 부분 참고
  • JSLint: 부록 C 참고, 자바스크립트를 분석하여 나쁜 점들을 알려주는 자바스크립트 파서, 엄격한 수준의 분석 결과 제공, 나쁜 점이 보고되지 않았다면 좋은 점만을 사용해서 프로그래밍됐다고 확신 가능한 신뢰성
  • 결론
    • 모순과 오류가 많음에도 자바스크립트를 사용해야 하는 이유
      1. 선택의 여지가 없음
        • 모든 브라우저에서 사용할 수 있는 유일한 언어
        • 다른 언어들도 있었으나, 살아남았다는 것이 반증
      2. 실제로 꽤 괜찮다는 것
        • 매우 경량화돼 있음
        • 표현적(expressive)
        • 함수형 프로그래밍(functional programming)
    • 자바스크립트를 잘 사용하기 위해 언어의 한계점을 알아야 함
    • 좋은 점들이 나쁜 점들을 보상하고도 남을 정도로 충분한 가치가 있음

03. 예제 테스트를 위한 간단한 준비

  • program.html
<html><body><pre><script src="program.js">
</script></pre></body></html>
  • program.js
document.writeln('Hello, world!');

두 파일은 같은 폴더에 있어야 함

  • 새로운 메소드를 정의할 때 두루 쓰이는 method라는 메소드
Function.prototype.method = function (name, func) {
  this.prototype[name] = func;
  return this;
};
profile
한꺼번에 몰아치지 아니하고 오래도록.

0개의 댓글