호이스팅, 스코프
프로그래밍 언어/javascript

스코프 스코프는 어떤 변수가 선언된 공간 또는 환경을 말합니다. 어떤 변수의 스코프는 해당 변수가 접근될 수 있는 범위입니다. 참고 : 'strict mode' 쓰면 js 가 원칙대로 실행될 수 있도록 원한다면 넣으면 에러에 대해서 제대로 확인할 수 있다. 글로벌 스코프(전역 스코프) 함수나 블록 바깥에 선언된 변수 어디에서든지 접근 가능 ​ 함수 스코프 함수 안쪽에서만 접근 가능한 변수 지역 스코프라고도 불린다. ​ 블록 스코프(ES6) 블록 ({}) 안에서만 접근 가능하다. let, const 에만 적용 함수도 블록 스코프! ​ ​ 스코프 체인 하위 스코프는 상위 스코프를 스코프 체인을 통해 변수를 참조해서 사용할 수 있다. 스코프 체인(scope chain)은 함수의 감춰진 프로퍼티인 [[Scope..

실행 컨텍스트
프로그래밍 언어/javascript

실행 컨텍스트 실행 컨텍스트란? 자바스크립트가 실행되는 환경이다. 원래 js는 인터프리터 언어였지만 성능 문제로 인해 JIT로 컴파일러로 실행하는데 js가 실행이 될 때 가장 먼저 실행되는 것이 전역 실행 컨텍스트를 생성합니다. 전역으로 컨텍스트가 생성되는데 각 변수, 함수에 대해서 각각의 컨텍스트가 생성됩니다. 그 과정에서, 함수 실행 및 콜백 기다림이 발생을 합니다. ​ const title = 'Hello'; const firstFunction = () => { let a = 1; a += 3; return a; } const secondFunction = () => { const b = 20; return b; } 여기 코드에서 3개의 컨텍스트가 생성됩니다. 전역 실행 컨텍스트 firstFunct..

javascript 특징
프로그래밍 언어/javascript

자바스크립트 언어 특징 high level 의 언어 반대로는 low level 언어에는 c 언어가 있다. 이건 memory를 직접 관리한다. memory 자동 관리 성능이 낮다. 인터프리터 언어 머신코드 : 컴퓨터가 이해할 수 있는 0,1로만 이루어져 있는 코드 js는 인터프리터 언어로 컴파일이 필요 없습니다. garbage collector 사용하지 않는 객체를 자동으로 제거 멀티 패러다임 절자지향, 객체지향, 함수형 프로그래밍 모두 가능하다! 프로토타입 기반 js에 있는 건 거의 객체 이다.(원시 타입 제외) Array.prototype.push 일급 함수 함수를 변수처럼 처리 함수를 다른 함수 안으로 처리할 수 있다. 함수에서 함수를 반환 동적 변수에 datatype을 할당하지 않는다. 런타임에서 ..

JIT 컴파일러
프로그래밍 언어/javascript

컴파일러 vs 인터프리터 ??차이는?? 컴파일러 소스코드 -> 머신코드 -> 프로그램 실행 소스코드 -> 머신코드 : 전처리(preprocessing) 머신코드 -> 프로그램 실행 : 처리(processing) 인터프리터 소스코드 -> 프로그램 실행 processing만 존재 컴파일러는 한 번에 머신 코드로 실행되고 바이너리 파일로 쓰여진다. 컴파일 이후에 실행이 가능하다. 인터프리터는 한줄씩 소스 코드를 읽으면서 실행하고 컴파일러에 비해 속도가 느리다. 변경 사항을 빠르게 테스트할 수 있다. js는 인터프리터 언어인가?? 맞긴하다! 하지만 chrome v8 engine이 나온 이후로는 컴파일도 같이 진행한다. why? 성능 최적화를 하기 위함! ​ JIT(Just-In-Time) 컴파일러 ​ 인터프리터..

javascript engine과 runtime
프로그래밍 언어/javascript

javascript engine과 runtime 자바스크립트 엔진은 자비스크립트 코드를 실행하는 프로그램입니다. V8 엔진 -> Node.js / Chrome ​ ​자바스크립트 엔진 안에 call stack, heap이 있습니다. 자바스크립트 런타임 에는 여러가지가 있습니다.(browser, node.js) 1. 브라우저 구성요소로는 js engine(call stack, heap), Web api랑 callback Queue가 있습니다. WEB APIs DOM Timers Fetch Etc.. ​ Callback Queue 콜백 큐에서 빼서 실행할 때는 이벤트 루프를 통해 실행됩니다. ​ 2. Node.js nodejs에도 js 엔진이 있고 web api 대신 C++ 바인딩과 스레드 풀이 있고, 콜백 ..

javascript(자바스크립트) 기초, 개발 환경 구축, 기초 함수 소개
프로그래밍 언어/javascript

안녕하세요! 항상 나아가는 개발자 pink_salt 핑솔입니다! 다음달부터 react-native로 프로젝트를 진행해야할 일이 있어서 이번에 javascript에 대해서 공부해보려고 합니다. javascript는 저번에 node.js과 react로 웹개발을 할 때 사용하였는데 아직 미숙한 부분이 많아서 ㅜㅜ 기초부터 다시 잡으려고 합니다. gogo! 일단 웹 프로그래밍부터 짚고 넘어갈게요. 웹프로그래밍은 웹사이트, 웹 페이지를 만드는 과정이며 '웹 브라우저'와 관련된 프로그램을 작성하는 것입니다. 백엔드(back-end) 프로그래밍 : 서버에서 데이터 관리를 프로그래밍 하는 것입니다. 프론트엔드(front-end) 프로그래밍 : 서버에서 받아온 정보를 웹 브라우저에 어떻게 표시할 것인지(user에게 어떻..