JS 공식문서 스터디 2. 문법과 자료형

CHO WanGi·2025년 9월 2일

Javascript

목록 보기
13/20

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Grammar_and_types#%EA%B8%B0%EB%B3%B8

변수

선언

  • 선언 방법은 총 3가지

    1. var → 선언과 동시에 undefined로 초기화됨
    2. let
    3. const
  • JS 엔진은 선언 시 이름을 등록해서 존재를 알림

  • 이후 할당 단계에서 메모리 공간 확보하고 암묵적으로 undefined 할당

선언 실행 시점

  • Runtime이 아닌 그 이전에 먼저 실행
  • JS 엔진은 Runtime 전에 변수 선언을 포함해 모든 선언을 먼저 실행
  • 그래서 호이스팅 가능함

전역 변수

  • 전역 변수는 전역 객체의 속성(property)이 됨

데이터 구조 및 타입

분류

  • 원시 타입 (Primitive, 7개 )

    1. Boolean
    2. null
    3. undefined
    4. Number
    5. BigInt
    6. String
    7. Symbol
  • 객체 타입 (Object, 1개 )


형변환

JS는 타입 변환이 미친듯이 유연

let intToStr = 34 + ''
console.log(intToStr) // "34"

숫자 + 문자열 → 자동으로 문자열로 변환


템플릿 리터럴

  • Runtime 시 일반 문자열로 처리
  • 배열 만들 때 new Array도 있지만 []로도 가능함
var myList = [, "home", , "school"]
console.log(myList) // [empty, "home", empty, "school"]

중간에 빈 값 넣으면 undefined로 나옴

불리언 리터럴의 Wrapper 객체

불리언 객체는 원시 불린 데이터 형을 감싸는 래퍼(wrapper)입니다. 더 많은 정보는 Boolean을 참고하세요.

이게 갑자기 무슨 소리인가 싶다.
불린값은 원시 형태인데 갑자기 객체라고 하고 이 객체는 Wrapper 라고 한다.

그리고

Boolean 객체의 true와 false 값을 원시 Boolean 값 true, false와 혼동해선 안됩니다.

이건 또 무슨 말인가
자세히 뜯어보자

Boolean 값(primitive) vs Boolean 객체(object)

  • 불린 원시값
    true와 false 두가지 값만 존재하는 원시 타입.
let a = true;     // 불린 원시값
let b = false;    // 불린 원시값
  • 불린 객체
    new Boolean(true) 처럼 Boolean 생성자를 통해 만들어진 객체
let obj = new Boolean(true);   // 불린 객체

즉 원시값은 진짜 data이고, 객체는 속성과 메서드를 가진 포장된 버전.

그럼 다시 돌아가서

"Boolean 객체의 true/false 값"과 "원시 불린 true/false" 혼동 금지"

는 무슨 말일까

  • truthy/falsy 평가
let primitiveFalse = false;
let objectFalse = new Boolean(false);

console.log(primitiveFalse);       // false
console.log(objectFalse);          // [Boolean: false]

if (primitiveFalse) {
  console.log("원시값");
}

if (objectFalse) {
  console.log("객체값"); 
}

primitiveFalse는 원시값 자체가 false기에 console에 나오지 않지만,
objectFalse는 객체 이므로 Truthy 값이 되고 true로 평가되어 console에 나오게 된다.

profile
제 Velog에 오신 모든 분들이 작더라도 인사이트를 얻어가셨으면 좋겠습니다 :)

0개의 댓글