Dandy Now!
  • [개발자의품격][부트캠프][1기][6차시] JavaScript 주요 포인트 #2
    2022년 01월 21일 01시 18분 11초에 업로드 된 글입니다.
    작성자: DandyNow
    728x90
    반응형

    JavaScript 주요 포인트 #2

     

    let person2 = {
        name: "홍길동",
        age: 22,
        tel: "010-0000-0000",
        isAdult: true,
    }; // 실무에서 주로 선언하는 방식이다.
    let person2 = new Object(); //이렇게도 선언 가능하지만 실무에서는 잘 쓰지 않는다.

    위의 코드는 오브젝트(object)를 할당하는 예이다. 오브젝트는 매우 중요하다. 자바스크립트는 객체의 집합이다. 자바스크립트의 모든 것이 객체이다. 오브젝트 안에 오브젝트를 넣을 수 있다. 

     

    let name1 = person.name; // person 오브젝트의 name 키에 접근
    let name1 = person["name"]; // 위 코드와 동일한 기능

    오브젝트의 키에 접근하는 방식은 위와 같이 두 가지가 있다. []를 이용한 방식의 이점은 키명에 하이픈(-)이 있는 경우에도 접근 가능하다는 것이다. 서버로부터 json으로 데이터를 받아올 때 키에 하이픈이 들어가 있는 경우가 있다. json의 키는 큰따옴표로 감 쏴져 있기 때문에 하이픈이 있어도 자바스크립트 상에서 에러를 보여 주지 않는다. 하지만 .을 이용하는 방법으로 Json의 키에 접근하면 에러가 발생할 수 있다. 반면 []로 접근하면 에러가 발생하지 않는다.

     

    let nums = []; // 주로 이 방식을 사용함
    let nums = new Array(); // 이 방식도 가능하나 거의 사용하지 않음

    위의 코드는 배열을 할당하는 예이다. 배열(array)은 순서를 가지고 있는 연속된 데이터의 집합이다. 컴퓨터의 메모리 크기에 준하여 무한으로 담을 수 있다. 배열과 오브젝트는 어떤 데이터 값이든 다 담을 수 있다. 

     

    let nums = [1, 3, , 5, 7]

    배열은 연속된 데이터이므로 위와 같이 중간에 값을 비워 둘 수 없다.

     

    배열의 index는 0부터 시작한다. 그 이유는 수에 대한 서양의 패러다임 때문이다. 동양에서는 수가 1부터 시작한다. 반면 미국, 영국 등 서양에서는 0부터 시작한다. 한 예로 우리나라에서의 나이는 태어나자 마자 1살이다. 반면 서양에서는 0살이다.

     

    let persons = [
      {name: "홍길동", tel: "010-0000-0001"},
      {name: "유재석", tel: "010-0000-0002"},
      {name: "김종국", tel: "010-0000-0003"}
    ]

    DB에서 값을 가져올때는 위와 같이 배열 안에 오브젝트로 가져오게 된다.

     

    undefined는 자바스크립트 엔진이 자체적으로 제어한다. 반면 Null은 개발자가 제어할 수 있다. Null을 더 이상 참조할 필요가 없는 변수에 할당하면 가비지컬렉터가 이를 인지하고 메모리 블록을 비워준다. 만약 대량의 데이터가 할당된 변수가 있다면 해당 변수를 사용한 후에 Null을 할당하면 성능 향상을 기대할 수 있다.

     

    let x = 0.1;
    let y = 0.2;
    let z = x + y;
    console.log(z); // 0.30000000000000004

    자바스크립트는 64비트 부동소수점으로 모든 숫자를 관리한다. 0과 1을 넣을 수 있는 공간 64개를 마련하고 있다. 위 코드를 실행하면 콘솔창에 0.3이 아니라 '0.30000000000000004'이 찍힌다. 일반적으로 실무에서는 소수점 1~4자리 정도까지만 표기하기 때문에 문제가 될 일은 잘 없다. 하지만 빅데이터의 연산을 다룬다거나, 문제가 될만한 소수점 이하의 숫자를 다루게 된다면 주의해야 한다. 그럴 때는 "bignumber.js 라이브러리"를 이용하면 된다.

     

    console.log(3 / 0); // Infinity

    값을 0으로 나누게 되면 자바스크립트에서는 Infinity를 띄운다. 실무의 복잡한 코드에서 이를 잘 발견하지 못하여 애먹는 경우가 왕왕있다. 따라서 주의를 요하는 부분이다.

     

    undefined, null, 0, NaN, "", '', [], {} 는 모두 false에 해당한다. 조건문 사용 시 이 점을 유념하여 활용해야 한다. 

     

    if (typeof [] == "object") {
    } else {
    }

    null, {}, []는 오브젝트 타입이다. 타입 구분을 잘해야 하는데 그 이유는 위와 같은 조건문 사용 시 잘 드러난다.

     

    age = 17;
    isAdult = age >= 19 ? "성인" : "미성년자";
    console.log(isAdult); // 미성연자
    age = 20;
    isAdult = age >= 19 ? "성인" : "미성년자";
    console.log(isAdult); // 성인

    위의 코드는 조건 삼항 연산자의 예이다. 조건 삼항 연산자는 2가지 이상의 조건을 적용할 수 있다.

     

    728x90
    반응형
    댓글