Javascript Variable

akanana·2023년 1월 5일
0

개인공부

목록 보기
2/30
post-thumbnail

JS 변수


js의 변수는 원시/객체로 나뉜다.

원시

  • Booelan
    true/false가 존재.
  • Null
    null
  • undefined
    값을 할당받지 않은 변수.
  • Number
    64비트의 이진 형식. -(2^53-1) ~ 2^53 의 값을 지닌다.
    Nan, +Infinity, -Infinity 의 값또한 가질 수 있다.
  • BigInt
    임의 정밀도로 정수를 나타낼수 있는 원시값.
  • String
    16비트의 부호 없는 정수값으로 이루이전 집합.
  • Symbol
    고유하고 변경 불가능한 값. 'ATOM'

객체

JS var let const


var vs let

var

var value = 'banana'
console.log(value) // banana
var value = 'apple'
console.log(value) // apple

let

let value = 'banana'
console.log(value) // banana
let value = 'apple'
console.log(value)
//Uncaught SyntaxError: Identifier 'name' has already been declared

let은 위와같이 여러번 선언이 불가능하다 (const또한 그렇다)

let vs const

let

let value = 'banana'
console.log(value) // banana
value = 'apple'
console.log(value) // apple

const

const value = 'banana'
console.log(value) // banana
value = 'apple'
//Error: Uncaught ReferenceError: bar is not defined

둘의 차이는 immutable 라는 속성으로, const는 재할당이 불가능하다.

호이스팅

js는 var, let, const, function, function*, class를 모두 호이스팅 하여, 스코프의 선두에서 동작하도록 한다.
하지만 let은 이러한 특성과 달리 호이스팅 되지 않은것 처럼 동작한다.

console.log(foo); // undefined
var foo;

console.log(bar); // Error: Uncaught ReferenceError: bar is not defined
let bar;

why?
변수는 선언>초기화>할당의 단계를 통해 생성된다.
var은 이때 선언초기화가 한꺼번에 이루어진다.

console.log(foo); // undefined

var foo;
console.log(foo); // undefined

foo = 1; // 할당문에서 할당 단계가 실행된다.
console.log(foo); // 1

하지만 let은 선언, 초기화 단계가 분리되어 이루어진다.

console.log(foo); // ReferenceError: foo is not defined

let foo; // 변수 선언문에서 초기화 단계가 실행된다.
console.log(foo); // undefined

foo = 1; // 할당문에서 할당 단계가 실행된다.
console.log(foo); // 1

출처

0개의 댓글