JavaScript

2.1 자바스크립트의 탄생 웹 페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 프로그래밍 언어인 자바스크립트를 브렌던 아이크가 개발했다. 2.2 자바스크립트의 표준화 MS의 자바스크립트 파생 버전인 JScript와 자바스크립트가 표준화 되지 못하고 적당한 호환이 되었다. 그로인해, 브라우저에 따라 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈가 발생하기 시작해 모든 브라우저에서 원활하게 동작하는 웹페이지 개발이 어려워졌다. 이때 모든 브라우저에서 정상 동작하기 위한 자바스크립트의 표준화의 필요성이 대두되기 시작했다. 이 필요성에 의해 비영리 표준화 기구인 ECMA인터내셔널에서 ECMAScript 사양이 완성되었다. 2015년에 공개된 ES6 이후로 이전에 있는 공개보다는 비교적 작..
1.1 프로그래밍이란? 프로그래밍이란 문제 해결 능력으로 요구사항을 이해 및 풀이하고 정리하여 문제 해결을 위해 기계에게 정확하고 상세히 요구사항을 설명하는 작업이다. 문제 해결 방안을 고려할 때는 컴퓨터 입장에서 문제를 보는 컴퓨팅 사고를 갖고 논리적 수학적 사고가 필요하다. 또한, 해결 과제를 작은 단위로 분해하고 패턴화해서 추출하며, 프로그래밍 내에서 사용될 모든 개념은 평가 가능하도록 정의해야한다. 기능 디자인에서는 판단해야하는 상태와 그 상태를 판단하는 시기, 그리고 판단 기준을 정의해야 하며, 이를 바탕으로 분해한 처리의 실행 여부를 결정한다. 1.2 프로그래밍 언어 문제 해결 능력을 바탕으로 정의된 문제 해결 방안은 컴퓨터에게 전달되어야 하는데, 컴퓨터는 기계어로 명령을 전달해야 이애하고 동..
1. ==와 ===의 차이점 느슨한 동등 비교 연산자(==)와 엄격한 동등 비교 연산지(===)는 동일한 비교 연산을 하지만, 엄격한 동등 비교 연산자의 경우에는 타입변환(Type Conversion)을 허용하지 않아 타입이 일치해야한다. 엄격한 동등 비교는 타입변환이 없기 때문에 값과 타입이 모두 같아야 동등하다는 결과가 나오기 때문에 예외가 없지만, 느슨한 동등 비교 연산의 경우 주의해야할 예시가 몇몇 있다. 2. == 의 동작 타입이 다른 두 값을 ==로 비교 시, 한쪽 또는 양쪽 피연산자에서 타입을 일치시켜 간단히 값만 보고 비교한다. 2-1 NaN 비교 NaN은 그 자신과도 동등하지 않기에 어떤 동등비교를 해도 동등한 결과가 나오지 않는다. 2-2 +0과 -0 비교 +, - 와 같은 부호는 다른..
정의 자바스크립트의 모든 객체는 자신의 원형(Prototype)이 되는 객체를 가지며 이를 프로토타입이라 한다. 보이지 않는 속성인 [[Prototype]]이 자신의 프로토타입 객체를 참조한다. 이를 __proto__라는 속성으로 참조할 수 있으나 이는 비표준이고 모든 브라우저에서 동작하지 않기에 실사용은 지양하자. .prototype과 [[Prototype]] 모든 객체는 은닉 속성인 [[Prototype]]을 갖는데 특별히 함수 객체는 접근할 수 있는 속성인 prototype을 갖는다. 프로토타입이 햇갈리는 이유가 여기서 나온다. 이름이 비슷해 관계를 명확하게 파악하기 쉽지 않다. [[Prototype]] 이란? 자신의 프로토타입 객체를 참조하는 속성 .prototype 이란? new 연산자로 자신을..
사전 지식으로 콜 스택(Call Stack)과 힙(Heap)을 알아야한다. Javascript는 단일 스레드(Single-threaded) 기반 언어로, 자바스크립트 엔지이 단일 콜 스택을 갖는다. 이 말은 요청이 동기적으로 처리된다는 것을 의미한다. 그런데 이상하다. 우리가 작성한 코드에는 분명 비동기로 작성한 부분이 있는데 이는 어떻게 된것인가? 이를 알기 위해 우선 이벤트 루프라는 용어를 정의 해보자. 1. 이벤트 루프의 역활은? 이벤트 루프는 싱글 스레드인 자바스크립트의 작업을 멀티 스레드로 돌려 작업을 동시에 처리 또는 여러 작업중 우선순위를 적용해 동작 순서를 결정하는 컨트롤러다. 정리하자면, 브라우저 내부의 Call Stack, Callback Queue, Web APIs 등의 요소를 모니터..
실행 컨택스트와 스코프, 콜 스택과 힙의 사전 지식이 필요하다. 메모리 누수 Javascript 메모리는 원시값을 저장하는 콜 스택 메모리와 참조 값을 저장하는 힙 메모리로 구분된다. 실행 컨텍스트(GEC, FEC)가 콜 스택에 쌓이게 되면 참조 값이 있다면 힙 메모리에 데이터가 쌓이게 됩니다. 실행 컨텍스트가 차례대로 제거 된다면, 그 순서에 맞게 힙 메모리에 쌓인 데이터는 더이상 참조되지 않으므로 필요가 없어집니다. 이때 계속해서 힙 메모리에 불필요한 데이터가 메모리를 차지하게되면 메모리 누수로 인해 성능이 떨어지게됩니다. 메모리 누수? 사용하지 않는 메모리를 해제하지 못하여 계속 메모리를 점유하는 것 종합하자면, 가비지 컬렉터가 더이상 참조되지 않는 객체를 인지하고, 불필요한 메모리를 해제한다. 가..
58청춘
'JavaScript' 카테고리의 글 목록 (4 Page)