ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 01. 자바스크립트의 좋은 점들
    읽은 책/자바스크립트 핵심가이드 2014. 4. 19. 13:01

    < 더글라스 크락포드의 자바스크립트 핵심가이드 >

    01. 자바스크립트의 좋은 점들

    자바스크립트에는 나쁜점도 있다. 하지만 좋은 점이 훨씬 많아서 나쁜점들에 대해 신경을 쓰지 않게 한다.

    자바스크립트 = 동적언어.

    동적언어란?

    컴파일 과정을 거치지 않는 언어로써 프로그램이 실행 중에 다른 코드의 일부(객체나 소스코드나 뭔가 확장할 수 있는 부분)를 동적으로 로딩 혹은 include 할 수 있는 언어

     

    자바스크립트가 만들어지게 된 좋은 아이디어 : 함수, 느슨한 타입체크, 동적 객체, 표현적인 객체 리터럴 표기법

    & 일급객체

    일급객체란?

    언어상에 제약이 없는 객체를 말한다. 즉 변수에 대입되거나 인수로 넘길 수도 있고, 반환값으로 사용하거나 연산 등에 사용하는데 전혀 제약이 없는 객체. 참조: http://en.wikipedia.org/wiki/First-class_object

    나쁜 아이디어 : 프로그래밍 모델이 전역변수에 기초하고 있다는 것.

     

    느슨한 타입체크의 장점

    1. "강력한 type체크가 오류를 알려주지만, 우려하는 오류를 알려주진 않는다."

    2. 클래스 구성할 필요 X

    3. 타입 캐스팅과 씨름할 필요 X

     

    객체 리터럴 표기법 장점   - 객체 리터럴에 대해선 3장에서 나옵니다.

    1. 단순히 필요한 요소들을 열거하는 방법으로 객체 생성

    리터럴이란?

    모든 데이터 타입에 들어가는 데이터값 그 자체.

    Function Literal이란?

    자바스크립트는 함수를 정의하는 "함수 리터럴" 문법도 제공한다.
    var literal = function(x) { return x; }
    이름 없는 함수(익명함수)를 프로그램 내에 리터럴 형태로 포함시킬 수 있게 한 최초의 언어인 "Lisp" 프로그램 언어를 기리는 의미에서, 이러한 방식으로 정의된 함수를 람다함수(lambda function)라고 부른다.

     

    함수 리터널을 구현하는 또다른 방식.


    var literal = new Function("x", "return x;");

     

     

    Object Literal이란?
    자바스크립트는 객체를 생성하고 프로퍼티를 지정하는 객체 리터럴 문법을 제공한다.

    1. 블록안에 객체 Property를 콜론(:)으로 구별한 (key: value)형태의 값을 정의하고 각각의 Property를 쉼표(,)로 분리한다.

    var obj =
    {
        x: 2.3
        , y: -1.2
    };

    2. 객체 리터널을 아래와 같이 자바스크립트만의 표현식을 사용할 수 도 있고 중첩된 객체
    활용도 가능하다. 

    var obj =
    [
        {x: {x: 2.3, y:-1.2}, y: {x: 2.3, y:-1.2}}
        , {x: {x: 2.3, y:-1.2}, y: {x: 2.3, y:-1.2}}
        , {x: {x: 2.3, y:-1.2}, y: {x: 2.3, y:-1.2}}
    ];


    3. 또한 아래와 같은 2가지 형태의 리터널 정의도 가능하다.
        var obj = new Object()
        obj.name = 'test';
        var fnObj = new function(){ this.name = 'test'; return this };

     

    ※ 리터럴로 객체 생성과 객체 생성자 방식의 차이

    var stooge = { "first-name" : "Jerome"} 로 {} 아무것도 없거나  하나이상의 이름/값 쌍들을 둘러싸는 중괄호 / 중첩된 객체로도 사용가능

    var oEmpty = new Object()

     

    프로토타입에 의한 상속

    특정 객체에 있는 속성들을 다른 객체에 직접 상속

     

    나쁜점 : 전역변수.

    자바스크립트에서 함수 밖에서 선언하면 전역변수가 되고, 함수 내에서 선언하면 지역변수가 된다. 하지만 함수 내에서 선언했다고 하더라도 var를 사용하지 않고 test = "local" 이라고 선언하면 전역변수가 되어 생각하지 않은 값을 낼 수 있고, 이렇게 같은 이름의 변수가 생기면 변수의 어느부분에서 오류가 났는지 찾기가 어렵다.

     

    ※ 이 책에서 말하는 자바스크립트 사용이유

    1. 선택의 여지가 없다.

    2. 꽤 괜찮다. ( 경량화되있다. 표현적(expressive)이다. functional programming 이다.)

     

     

     

     

     

     

     

    자바스크립트를 정의하는 표준 : The ECMAScript Programming Language third Edition / http://www.ecmainternational.org/publications/files/ecma-st/ECMA-262.pdf

     

Designed by Tistory.