자바스크립트(Javascript)에서 자료형(Data Type)이란, 프로그래밍 언어로 조작 할 수 있는 값의 유형을 말한다. 자바스크립트에는 총 8가지 자료형이 존재하고, 원시 타입과 참조 타입으로 크게 나뉘고 7가지 원시 타입, 1가지의 참조 타입이 존재한다.원시
스레드(thread)란 프로세스(process) 내에서 실제로 작업을 수행하는 주체를 의미한다.모든 프로세스는 한가지 이상의 스레드가 존재하여 작업을 수행하는데,두개 이상의 스레드를 가지고 있는 프로세스를 멀티 스레드 프로세스(multi-threaded process)
call by value 와 call by reference 란, 변수나 객체등이 함수의 인자(argument)로 들어와 매개변수(parameter)로 전달될 때 어떤 방식으로 전달될 지를 결정하는 방식이다.함수의 호출 방식은 크게 두가지1\. Call by value
자바스크립트에서 document.addEventListener(event,handler) 로 요소에 이벤트를 걸거나 HTML에서 onEvent 을 사용해 이벤트를 적용 할 수 있다.만약 버튼에 클릭이 발생할 때 마다 특정 로직을 실행하고 싶다면 두가지 방법이 사용 가능
이벤트 캡쳐링과 이벤트 버블링을 활용하면 강력한 이벤트 핸들링 패턴인 이벤트 위임(Event delegation)을 구현 할 수 있다.이벤트 위임은 비슷한 방식으로 여러 요소를다뤄야 할 때 사용된다. 이벤트 위임을 사용하면 요소마다 핸들러를 할당하지 않고, 요소의 공통
자바스크립트에서 사용되는 변수 선언 방식에는 세가지가 있다. var , let , const 이다. var 는 비교적 오래전부터 사용되어 왔지만 (ES6 이전), 현재는 잘 사용되지 않는 변수 선언식이고, 주로 let 과 const 가 사용된다. 변수 선언에는 활용에
문서 객체 모델 (Document Object Model)은 HTML, XML 문서를 객체화한 것이다.프로그래밍 언어가 해당 문서에 접근하여 읽고 수정할 수 있도록 API를 제공하는 일종의 인터페이스라고 할 수 있다.자바스크립트 같은 스크립팅 언어가 쉽게 웹 페이지에
자바스크립트에 자료 조사를 하다보면, ES5, ES6 등 비슷한 말을 자주 접하게 되는데, 여기서 말하는 ES 는 ECMAScript 를 말한다. Javascript 와 ECMAscript ? 도대체 무엇이 다르고 무엇 때문에 영향을 주는 것인지 알아보자.자바스크립트의
자바스크립트에서 일급 객체(first-class Object)란?다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.자바스크립트에서 일급 객체는 다음과 같은 특성을 가지고 있다.변수에 할당(assignment) 할 수 있다.다른 함수의 인자(ar
에러가 있는 코드는 배제하고 싶지만, 아무리 완벽하게 짜여진 코드라고 하더라도 예외의 경우는 있는 법이다.그렇다면 예외를 처리하려면 어떻게 해야할까? 예외의 경우에도 스크립트가 죽지 않도록 하려면 해결책을 만들어야한다.그 방법으로 try...catch 문을 활용해 코드
자바스크립트에서 비동기 처리란, 현재 실행중인 작업과는 별도로 다른 작업을 수행하는 것을 말하는데, 예를 들어 서버에서 데이터를 받아오는 작업은 시간이 걸리기 때문에 자바스크립트의 서버 호출 함수는 비동기 함수로 이루어져 있다.비동기는 특정 코드의 실행이 완료될 때까지
자바스크립트는 오랫동안 호환성 이슈 없이 발전해왔다. 기존 기능을 변경하지 않으면서 새로운 기능을 추가해왔다.덕분에 기존 코드는 절대 망가지지 않는다는 장점이 있었지만, 초창기 생긴 실수나 불완전한 결정이 자바스크립트라는 언어 안에 영원히 박제되었다는 단점도 존재한다.
렉시컬 스코프(Lexical Scope) === 정적 스코프(Static Scope)같은 말이다.렉시컬 스코프는 함수를 어디에 선언하였는지에 따라 상위 스코프가 결정되는 것을 말한다.자바스크립트를 포함한 대부분의 프로그래밍 언어는 렉시컬 스코프를 따르며, 정적 스코프(
자바스크립트에서 0.1+0.2를 하게되면 0.3이 나올 것 같지만, 결과는 다르다.왜 이런 결과가 나오게 되는 것일까?모든 컴퓨터들은 자료를 비트와 바이트 (bit & byte)로 저장한다. 비트는 컴퓨터에서 사용하는 가장 작은 데이터 단위이고, 하나의 비트는 2진수로
나를 포함한 많은 사람들이 double equals 와 triple equals 의 차이에 대해서double equals 은 값을 비교한다.triple equals 은 값과 자료형 모두 비교한다.이렇게 알고 있는 경우가 많다. 하지만 이 정보는 완전히 잘못된 정보이다.
클로저(closure)의 개념 클로저는 사실 자바스크립트 고유의 개념이 아니라 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성이다. 자바스크립트의 고유 개념이 아니므로 ECMAScript 명세에 클로저의 정의는 등장하지 않는다. > “A
자바스크립트는 객체가 생성되었을 때 자동으로 메모리를 할당하게되고, 더 이상 필요가 없을 때 자동으로 해제한다. 이걸 가비지 컬렉션이라고 하고 이러한 자동 메모리 관리는 잠재적 혼란의 원인이 되기도 하는데, 개발자가 메모리 관리에 대해 고민할 필요가 없다는 잘못된 인식
재귀의 뜻 그대로 재귀 함수란, 다시 돌아오는 함수 즉 자기 자신을 다시 호출해 작업을 수행하는 방식이다. 그렇기 때문에 특정 분기까지 자기 자신을 계속해서 호출하는데, 주로 반복문을 구현할 때 사용하게 된다.우리가 흔히 알고 사용하는 for , while , redu
꼬리 재귀(Tail recursion)는 간단하다. 재귀 함수의 단점으로 인해 반복문을 사용하는 상황을 피할 수 있는 방법 중 하나인데, 너무 많은 재귀 호출로 인해 메모리 초과(Stack overflow) 오류가 발생 할 수 있다. 꼬리 재귀를 통해 콜 스텍(call
메모리 누수란? 부주의 또는 일부 프로그램 오류로 인해 더이상 사용되지 않는 메모리를 해제하지 못하는 것을 메모리 누수라고 한다. 간단하게, 사용되지 않는 변수가 있다고 했을 때 수동으로 혹은 자동으로 해제되지 않아 계속 메모리를 점유하고 있는 상태를 말한다. 자바스
자바스크립트의 정의 자바스크립트는 웹페이지에 생동감을 불어넣기 위해 만들어진 프로그래밍 언어이다. 자바스크립트로 작성한 프로그램을 스크립트라고 부르고, 스크립트는 웹페이지의 HTML 안에 작성할 수 있는데, 웹페이지를 불러올 때 스크립트가 자동으로 실행된다. 스크립트는
한번에 하나의 일만 수행 가능문맥 교환(context switching)이 필요하지 않음프로그래밍 난이도가 쉽고, CPU 및 메모리 사용이 적음단순 CPU만을 사용하는 계산 작업은 오히려 멀티 스레드보다 효율적일 수 있음연산량이 많은 작업을 할 경우 그 작업이 완료되어
API란 어플리케이션 프로그래밍 인터페이스(Application Programming Interface)의 약자로, 소프트웨어 응용 프로그램에서 다른 소프트웨어 구성 요소 또는 서비스와 상호 작용을 하기 위한 인터페이스를 제공하는 프로그래밍 기술을 뜻한다.무슨 말인지
프로그램은 기본적으로 반복되는 작업을 수행하도록 설계가 된다. 반복을 구현하는 로직은 필수적이고 프로그래밍 언어마다 for , while 과 같은 기본적인 반복 제어문을 지원하고 있다. 반복되는 작업은 기본 반복 제어문을 통해서 뿐만 아니라 재귀 함수로도 구현 할 수
AJAX란, 자바스크립트의 라이브러리 중 하나이며 비동기식 자바스크립트와 XML의 약자이다. 브라우저가 가지고 있는 XMLHttpRequest 객체를 이용하여, 전체 페이지를 새로 고치지 않고도 페이지의 일부만을 위한 데이터를 로드하는 기법으로 자바스크립트를 사용한 비
서버에서 클라이언트로 데이터를 보낼 때 사용되는 파일 언어 두가지, XML과 JSON. 요즘은 JSON을 더 많이 사용하는 추세이다. 과거의 XML은 헤더와 태그 등 여러 요소들의 가독성이 떨어지고, 용량도 효율적이지 못하다는 평가를 받았는데, 이를 보완하고 문제점을
기존에는 팩토리 함수를 통해, 혹은 생성자 함수를 통해서 객체를 생성하는 방식을 사용했었다. ES6 이 후로부터 클래스를 통한 객체를 생성하는 방식이 생겼는데, 함수로 객체를 생성하는 방법과 클래스를 사용해 객체를 생성하는 방법까지 간단하게만 알아보자.간단한 예시를 들
npm(node package manager)은 노드 패키지(modules)를 관리하기 위한 매니저 시스템으로 다양한 패키지들을 설치, 업데이트, 삭제하는데 도움을 주는 툴이라고 생각할 수 있다.노드의 정의는 크게 두가지로 나눌 수 있다.서버: 네트워크를 통해 클라이언