[JS 기초] 3. 변수

정현섭·2021년 4월 20일
0

Javascript 기초

목록 보기
3/6
post-thumbnail

드림코딩 by 엘리 님의 자바스크립트 기초 강의를 보고 정리한 글입니다.

스코프

  • block scope

    • 블록 "{ }" 안에서만 유효함.
  • Global scope

    • 파일 어디서든 유효함.

변수/상수 선언

  • let, const로 변수/상수를 선언하는 방식은 ES6에서 추가되었다.

    • (참고로 ES6로 개발하면 IE빼고 모든 브라우저가 지원되니 그냥 ES6 기준으로 개발하면 된다.)
  • 이 전까지는 var 을 이용해 변수를 선언하였지만 두가지 이유 때문에 코드를 스파게티로 만들어서 이제 쓰면 안된다

    • var은 호이스팅(Hoisting) 된다.
      • 변수 선언을 어디서 하든 무조건 해당 스코프의 맨 위로 끌어 올려주는 것
      • let, const는 호이스팅 안됨.!
    • block안에서 선언해도 변수가 block scope를 가지지 않고 무조건 전역변수로 되어버림.
  • const 으로 선언하면 상수 선언이 가능하다.

    • 될 수 있으면 const로 선언하는 것이 좋다. (security, thread safety, reduce human mistakes)

변수 타입

  • javascript는 변수의 type이 넣는 값에 따라 dynamic하게 결정됨. (Dynamic typing language)

  • typeof 연산자로 변수의 type을 알 수 있음 (js의 이 dynamic typing 특성 때문에 runtime 에러가 자주 발생하는데 그것을 막기위해 typescript가 나왔다.)

primitive type

  • number 정수, 실수(Infinity, -Infinity, NaN)
  • string : +연산자로 concat 가능, template string을 이용하면 편하게 원하는 형태로 출력 가능.
  • boolean
  • null : null로 선언해야 null임.
  • undefined : 할당 없이 선언만 했을 경우.
  • symbol : 식별자가 필요할 때 쓰는 것??? 뭔지 모르겠다. 나중에 유용하게 쓸 수 있다고 한다.

object type

  • object를 const로 지정할 경우 가리키는 object가 변하지 않는 선에서 property는 수정이 가능하다.

function

  • javascript 언어는 first-class function 이 지원되기 때문에 변수에 function을 할당하는 것이 가능하고 함수의 인자로 function을 주거나 function을 return하는 것이 가능하다.

Immutable vs Mutable

프로그래밍 언어에서는 두 가지의 데이터 타입이 존재한다.

Immutable data types

  • javascript에서는 primitive typesfrozen objects의 경우 Immutable data types에 해당한다.
    • (i.e. object.freeze() )
  • ex) string의 경우에 hello에서 1번째 값을 변경하여 hallo로 만드는 것이 안되고 hello 자체가 없어지고 hallo 를 넣는 방식만 가능하다. Immutable data type 이기 때문.

Mutable data types

  • javascript에서는 object의 경우 Mutable data type 에 해당한다.

+ 추가

primitive type의 경우 데이터가 변수가 가리키는 메모리에 그대로 저장되고

object type의 경우 변수가 가리키는 메모리에는 reference가 저장되고 reference가 실제 값들이 있는 곳을 가리키게 된다

0개의 댓글