ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 언어의 원리를 이용한 자바스크립트(1) | 강희성님
    Javascript/ECMAScript 2009 (ES5) 2020. 2. 29. 16:22
    반응형

    1주차 스터디 기록

    # 이진수는 0.1 을 만들 수 없기 때문에 소수점을 표현할 경우 오차가 생길 가능성이 있다.

    # 2 를 나누면 끝 자리는 항상 5로 끝난다.

     → 0.1 + 0.2 != 0.3 / 0.1 + 0.2 = 0.30000000000000004

    # 2의 52승을 넘어가면 정밀도가 떨어져서 작은 수를 탈락시킨다.

     

    # 데이터의 자료형을 항상 체크해라. (넘버형으로 받은 데이터는 넘버형 자료형으로 변환)

     

    Not a Number : 자료형을 나누려고 할때

    Infinity : 숫자를 0으로 나누려고 할때

     

    # 기본 자료형 : 메모리에서 어떤 위치에 가서 얼만큼 가져오라 (크기가 고정되고 그 크기를 담고 있으면 안된다)

     - 가져올 크기를 알려준다. (* 모든 변수는 자료형을 가지고 있고 변수의 역할은 메모리에서 위치를 알려준다.)

     - 메모리는 숫자만 저장되기에 어떤 값인지는(어떻게 사용할지) 자료형을 결정된다.

     - 자료형과 차이가 있음 (* 문자열은 기본 자료형일 수가 없다.)

     

    # Stack : 소스를 순서대로 실행되면 쌓이는 공간 (크기가 고정되어야 한다. = 크기를 알고 있어야 한다.)

     - 변수는 무조건 Stack에 쌓인다. * Stack은 값

    # Heap : 크기를 모르는 객체가 쌓이는 공간. (변수가 만들어지지 않는 영역)

    # 객체는 stack에 위치하고 본체(본 값)는 Heap에 있따.

     

    # 정의 -> 선언 -> 실행

      * 정의 : a 는 b다 / 선언 : a를 쓸거야 / 실행 : a를 직접 쓴다

     

    # Undifined : 선언을 했는데 값이 없어서 자료형을 결정할 수 없을 때 *ex) var a; => undifined

     

    # Null : 공간은 만들어져 있는 데 아무것도 들어있지 않는 상태 (≠값이 없다)

      → 참조형 객체일 때 값이 없을 경우에만 null 이 생긴다.

      * 객체는 특정 위치를 가리키는 역할 : 가리키는 값이 없기 떄문에 Null

     

    # false, 0, 빈 문자열 (""), 수가 아님을 뜻하는 NaN, null, 와 undefined은 모두 false가 됩니다.

     

    # 호이스팅 : 함수를 만나면 변수를 처음부터 끝까지 찾아서 함수 위로 올린다.

      * 선언만 올린다 / 대입X

    var a = 1; (function(){ console.log(a) var a = 2; }) 
    /////////////// 호이스팅 후 ////////////// 
    var a = 1; (function(){ var a; console.log(a) a = 2; })

     

    # 연산자 항이 적을수록 우선순위가 높다 (단항 > 이항 > 삼항) * ()가 제일 높은 우선순위

     

    # 형이 다른 데이터를 더할 경우 자료형이 변한다 = 형변화

     - 형변화는 자료가 손실되지 않는 쪽으로 변한다.

     - 숫자형 + 문자열 = 문자열 (: 숫자형 문자열이 될 수 있지만 문자열은 숫자형이 될 수 없어서)

     

    # if문이 깊어져도 if문의 조건은 간결하게

    var name = o && o.getName(); 
    var name = otherName || "default";

    # swicth문 : 하나의 값으로 다수의 분기 처리 (loop 안에서 쓰면 안된다)

    * if문 : 조건이 여러개일 경우

     

    # 객체는 기본 자료형이 아니다.

    # 리터럴 : 소스 상에서 표현된 소스 중에서 그대로 메모리에 값으로 저장되는 것 ex) size :12(숫자 리터럴)

     

    # 배열의 효율적 사용

    // 배열의 length 속성을 계속 찾기 때문에 비효율적 
    for (var i = 0; i < a.length; i++) { 
      // a[i] 로 뭔가를 수행 
    } 
    
    // 개선책 
    for (var i = 0, len = a.length; i < len; i++) {
      // a[i] 로 뭔가를 수행
    }

    자바스크립트에선 아래의 코드를 활용

    for (var i in a) { 
      // a[i] 으로 뭔가를 수행 
    }

     

     

     

    반응형

    댓글

Luster Sun