JavaScript 4

[Javascript] Data type - Primitive type

Javascript에는 다양한 data type이 있습니다. 자바스크립트에서 제공하는 데이터 타입은 8개가 있습니다. 데이터 타입은 크게 원시 타입(Primitive data type)과 객체 타입(object / reference type)으로 구분할 수 있습니다. Primitive type 원시 타입은 변경 불가능한 값(immutable value)으로 7가지가 있습니다. 블로그들이나 사이트를 보면 6개로 표시하거나 5개로 표시하는 경우도 있습니다. Symbol type의 경우 ES2015(6) 문법에서 추가가 되었고 Bigint type의 경우 ES2020에서 새롭게 추가된 data type입니다. 위에서 변경 불가능한 값이라는 게 무엇을 말하는 것일까요? 자바스크립트는 동적 언어이고 사용해 본 사..

[JavaScript] Hoisting이란?

Hoisting이란? 변수나 함수 선언문 등을 해당 scope의 선두로 옮긴 것처럼 동작하는 특성을 말합니다. 코드를 통해서 알아보겠습니다. console.log(a); var a = 'Hello World'; 다음과 같은 코드를 실행하면 javascript는 코드를 순차적으로 실행을 하기에 a 값이 없다고 error가 나와야합니다. 하지만 위의 코드를 실행하면 'undefined'라는 결과가 나옵니다. 그 결과가 나오는 이유는 위의 코드가 아래와 같이 동작을 하기 때문입니다. var a; console.log(a); a = 'Hello World'; 첫 번째 코드를 실행시키면 Hoisting에 의해 두 번째 코드처럼 실행이 된다고 하였습니다. 그렇다고 해서 실제로 물리적으로 바뀌는 것이 아니라 선두로 ..

[Javascript] Javscript 동작(2)

이전 글에서 Javascript가 어떻게 동작하는지를 알아봤습니다. JS engine이 create phase에서 execution context라는 것을 만듭니다. 처음 코드를 접했을 때는 global execution context를 만들어 execution stack(call stack)에 push를 하고 함수가 호출될 때마다 각 함수만의 execution context를 만들어서 stack에 push합니다. 그 후에 실행을 시키고 stack에서 pop을 하게 됩니다. 저번 글에서 creation phase 부분에서 execution context를 생성한다고 하였고 이번 글에서는 execution phase에 대해서 이야기해보려고 합니다. 이전 글을 못 보셨으면 먼저 읽고 오시길 바랍니다. 202..

[Javascript] Javascript 동작(1)

Javascript란? Javascript는 싱글 쓰레드로 동작하는 객체 기반의 스크립트 언어입니다. 웹 브라우저나 Node와 같은 런타임 환경에서 실행이 됩니다. Javascript에는 hoisting, call by sharing, prototype, closure 등 다른 프로그래밍 언어에서 찾아볼 수 없는 특징들이 있습니다. 또한 런타임 환경에서는 비동기 작업을 하기도 합니다. Javascript는 어떻게 동작할까? Javascript가 어떻게 동작하는지 알기 위해서 먼저 Execution context와 Execution Stack에 대해서 알아야 합니다. Execution context와 stack에 대해서 잘 알면 나중에 hoistong이나 closure와 같은 개념에 대해서 더 잘 이해할 ..