드림코딩 by 엘리 님의 자바스크립트 기초 강의를 보고 정리한 글입니다.
block scope
Global scope
let, const
로 변수/상수를 선언하는 방식은 ES6에서 추가되었다.
이 전까지는 var
을 이용해 변수를 선언하였지만 두가지 이유 때문에 코드를 스파게티로 만들어서 이제 쓰면 안된다
var
은 호이스팅(Hoisting) 된다.let
, const
는 호이스팅 안됨.!const
으로 선언하면 상수 선언이 가능하다.
security
, thread safety
, reduce human mistakes
)javascript는 변수의 type이 넣는 값에 따라 dynamic하게 결정됨. (Dynamic typing language)
typeof 연산자로 변수의 type을 알 수 있음 (js의 이 dynamic typing 특성 때문에 runtime 에러가 자주 발생하는데 그것을 막기위해 typescript가 나왔다.)
first-class function
이 지원되기 때문에 변수에 function을 할당하는 것이 가능하고 함수의 인자로 function을 주거나 function을 return하는 것이 가능하다.프로그래밍 언어에서는 두 가지의 데이터 타입이 존재한다.
primitive types
와 frozen objects
의 경우 Immutable data types에 해당한다.object.freeze()
)hello
에서 1번째 값을 변경하여 hallo
로 만드는 것이 안되고 hello
자체가 없어지고 hallo
를 넣는 방식만 가능하다. Immutable data type 이기 때문.object
의 경우 Mutable data type 에 해당한다.primitive type의 경우 데이터가 변수가 가리키는 메모리
에 그대로 저장되고
object type의 경우 변수가 가리키는 메모리
에는 reference가 저장되고 reference가 실제 값들이 있는 곳을 가리키게 된다