HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤩
개발
/
NodeJs
NodeJs
/
Javascript
Javascript
/
2️⃣
변수
2️⃣

변수

원시 값 🆚 객체원시 값undefined 와 null참 같은 값, 거짓 같은 값숫자심벌(Symbol)객체용어 정의

원시 값 🆚 객체

  • 원시값의 종류 : 불리언, 숫자, 문자열, null, undefined
  • 다른 값은 모두 객체임
  • 각 객체는 고유하며, 엄격히 말해 그 자신과만 일치함( 자바의 객체별 주소 개념과 일치)
  • 반면, 원시 값은 값이 같으면 같다고 봄

원시 값

  • 값으로 비교
  • 프로퍼티를 바꾸거나, 추가하거나, 제거할 수 없음( 항상 불변 )
    • 원시 데이터형에 프로펕를 설정하거나 가져오면 암묵적으로 객체 래퍼를 생성함
    • “hello”.toUpperCase(); : String 객체 래퍼를 생성해서 메서드 호출함

undefined 와 null

  • undefined는 정보가 없음. 값이 없음 이라는 의미
  • null 은 “객체가 아니다” 라는 뜻임

참 같은 값, 거짓 같은 값

  • 아래 값들은 다 false로 해석됨
    • undefined, null
    • 불리언: false
    • 숫자 : -0, ,NaN
    • 문자열 : ‘’
  • Boolean() 함수는 매개변수를 불리언으로 변환해 반환함
 

숫자

  • 자바스크립트의 숫자는 모두 부동소숫점형 숫자임
    • 64비트로 인코딩된 배정밀도의 부동 소수점 (double로 알려진) 숫자임
  • NaN (’Not a Number’) : 에러 값임
  • Infinity : 에러로 생긴 값일 때가 많음
 

심벌(Symbol)


  • ES6에서 도입된 7번째 데이터 타입으로 변경 불가능한 원시 타입의 값임
  • 심벌 값은 다른 값과 중복되지 않는 유일무이한 값이고 외부로 노출되지 않아 확인이 불가능함 ⇒ 주로 이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용함
  • 객체의 프로퍼티 키로 사용할 수 있는 값은 빈 문자열을 포함하는 모든 문자열 or 심벌 값임
  • 심벌은 중복되지 않는 상수 값을 생성하는 것은 물론 기존에 작성된 코드에 영향을 주지 않고 새로운 프로퍼티를 추가하기 위해, 즉 하위 호환성을 보장하기 위해 도입되었음
📝
Symbol 상세 내용

객체

  • 참조로 비교 ( 각 값은 모두 고유함)
  • 기본적으로 변경 가능함 ( 프로퍼티를 자유롭게 추가, 변경, 제거 가능)

용어 정의

  • 값(value) : 표현식(expression)이 평가(evaluate)되어 생성된 결과
  • 리터럴(literal) : 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법(notation)
  • 표현식(expression) : 값으로 평가될 수 있는 문(statement). 즉, 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조함
  • 문(statement) : 프로그램을 구성하는 기본 단위이자 최소 실행 단위임
var str = 'abc'; str.length = 1; // 의미 없음 str.foo = 3; // 의미 없음 str.foo undefined
1 === 1.0 true Number('xyz') // NaN 3 / 0 // Infinity
const mySymbol = Symbol(); console.log(typeof mySymbol); // symbol console.log(mySymbol); // Symbol()
Symbol 함수는 String, Number, Boolean 생성자 함수와는 달리 new 연산자와 함께 호출되지 않음. new 연산자와 함께 생성자 함수 or 클래스를 호출하면 객체(인스턴스)가 생성되지만 심벌 값은 변경 불가능한 원시 값임