첫 번째 차이는 문법적 차이 입니다. 함수 선언문: function 함수이름() { ... } 함수 표현식: const func = function () { ... } 두 번째 차이는 자바스크립트 엔진이 언제 함수를 호출하는지 입니다. -> 호이스팅의 영향을 받는지 함수 표현식은 실제 실행 흐름 이 해당 함수에 도달했을 때 함수를 생성 합니다. 따라서 실행 흐름이 함수에 도달했을 때 부터 해당 함수를 호출 할 수 있습니다. 함수 선언문은 실제 실행 흐름이 함수 선언문이 정의되어 있는 부분에 도달하기 전에도 함수를 호출 할 수 있습니다. 이는 호이스팅 에 영향을 받습니다. 예시 // 실행 전 logMessage(); sumNumbers(); function logMessage() { return 'work..
자바스크립트 엔진이 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미합니다. 즉, 코드가 실행하기 전 변수선언/함수선언 이 해당 스코프의 최상단으로 끌어 올려지는 것같은 현상을 말합니다. 호이스팅은 스코드 단위로 발생 합니다. environmentRecord 과 hoisting의 연관 environmentRecord 는 실행 컨텍스트 객체는 활성화되는 시점에 VariableEnvironment, LexicalEnviornment 환경에 속합니다. environmentRecord 는 변수명만 끌어올리고 할당 과정은 그대로 남겨두게 됩니다. environmentRecord 는 현재 컨텍스트와 관련된 코드의 식별자 정보들이 저장 됩니다. 매개변수 식별자 함수 자체 함수 내부의 식별자 hoisti..
추상적인 개념, 실행할 코드에 제공할 환경 정보들을 모아놓은 객체 Stack, Queue Stack: LIFO (Last In First Out) Queue: FIFO (First In First Out) Stack 에서는 가장 마지막에 들어온 d,c,b,a 순으로 데이터를 꺼낼 수 있습니다. Queue 에서는 제일 먼저 들어온 a,b,c,d 순으로 데이터를 꺼낼 수 있습니다. 실행 컨택스트의 동작은, 동일한 환경에 있는 코드들을 실행할 때 필요한 환경정보를 모아 컨텍스트를 구성하고, 이를 콜 스택에 쌓아놓은 뒤, 가장 위에 있는 컨텍스트와 관련 있는 코드들을 실행하는 것으로 코드의 환경과 순서를 보장합니다. 실행 컨텍스트의 구성 방법 전역 공간 → 자동 실행 eval() 함수 → 사용을 권장하지 않음 ..
컴퓨터에 변수의 정체를 알리고, 공간을 확보하고, 원하는 값을 주는 과정이 변수 선언, 초기화, 할당 과정 입니다. 선언 선언 단계에서는 const, let, var 중 필요한 선언 키워드를 사용 합니다. 변수명을 실행 컨텍스트의 변수 객체에 등록하여 자바스크립트 엔진에 변수의 존재를 알립니다. 초기화 선언 키워드를 통해 이름이 정해진 변수에 값을 저장하기 위한 메모리 공간을 확보하고, 암묵적으로 undefined 를 할당 합니다. 또한 선언 키워드에 따라서 과정이 달라집니다. var 선언과 초기화가 함께 일어나기 때문에, 메모리를 갖고 있는 변수로 간주되어 선언문 앞에서도 해당 변수는 참조가 가능하게 됩니다. var 로 선언한 변수는 실행 컨텍스트 최상위로 이동하게 되고, var 키워드로 선언한 변수가..
자바스크립트의 변수 및 상수 선언 키워드 입니다. var 초기 자바스크립트는 변수 선언을 var 만을 사용 했습니다. var 특징 함수 레벨 스코프(Function Level Scope) 또는 전역 스코프 var a = "a"; function example() { var b = "b"; console.log(a); // a 전역변수. 출력가능. if (true) { var c = "c"; console.log(b); // b - 해당 함수 내 선언한 변수. 출력 가능. } console.log(c); // c - 해당 함수 내 선언한 변수. 출력 가능. } example(); // var는 변수의 중복 선언 가능 var name = "kim"; console.log(name); // kim var na..
하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙혀진 이름 식별자(Identifier) 메모리 공간에 저장된 값을 식별할 수 있는 고유한 이름 어떤 값을 구별해서 식별할 수 있는 고유한 이름 변수의 이름 을 식별자라고 표현하기도 합니다. 변수명 네이밍 규칙 변수명에는 오직 문자와 숫자, 그리고 기호 $와 _만 들어갈 수 있습니다. 첫 글자는 숫자가 될 수 없습니다. 예약어는 식별자로 사용할 수 없습니다. ES6부터는 유니코드를 지원 합니다. 대문자와 소문자를 구별 합니다. 카멜 표기법(camelCase) 여러 단어를 조합하여 변수명을 만들 때 주로 사용 합니다. 첫 단어를 제외한 각 단어의 첫 글자를 대문자로 작성합니다. let myVeryLongName 바람직..
미국의 넷스케이프 커뮤니케이션즈사(Netscape Communications)가 개발한 웹 브라우저에서 실행하는 스크립트 언어 입니다. JavaScript ? HTML로는 웹의 내용을 작성하고, CSS로는 웹을 디자인하며, 자바스크립트로는 웹의 동작을 구현할 수 있습니다. 자바스크립트는 주로 웹 브라우저에서 사용되거나, Node.js같이 서버 측 프로그래밍 언어에서도 사용할 수 있습니다. JavaScript 의 특징 자바스크립트는 객체 기반의 스크립트 언어 입니다. 스크립트는 웹페이지의 HTML 안에 작성할 수 있는데, 웹페이지를 불러올 때 스크립트가 자동으로 실행됩니다. 자바스크립트는 동적 타입 언어이며, 타입을 명시할 필요가 없는 인터프리어 언어 입니다. JavaScript 의 역할 HTML 페이지 ..
React 란 ❓ 리액트는 싱글 페이지 애플리케이션 UI(User Interface) 를 생성하는데 포커스를 맞춘 라이브러리 입니다. UI 를 표기하고 Event 에 반응하는 라이브러리 React 의 특징 리액트의 대표적인 특징으로 Virtual Dom (가상 돔) 이라고 합니다. ✔ Virtual Dom (가상 돔) 리액트는 가상 돔을 사용하여 웹 애플리케이션의 성능을 극대화 시켰습니다. 가상 돔을 이해하기 위해서는 우선 HTML과 CSS가 렌더링(Rendering) 되는 과정을 알아야 합니다. 1. 웹 브라우저가 HTML 을 전달 받으면 브라우저 렌더링 엔진은 HTML 을 파싱하고 DOM 트리를 생성 합니다. (Parsing) DOM(Document Object Model) 은 XML이나 HTML 문..