렌더링, Ajax, 비동기1995년, 약 90%의 시장 점유율로 웹 브라우저 시장을 지배하고 있는 넷스케이프 커뮤니케이션즈는 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입하기로 결정한다. 그래서 탄생한 것이 바로 브랜던 아이
프로그래밍, 기계어, 컴파일러, 인터프리터프로그래밍이란 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다.컴퓨터에게 우리의 문제 해결 방안을 전달하기 위해 컴퓨터가 이해할 수 있는 기계어로 전달해야 한다.하지만 ① 사람의 언어 체계와 ② 컴퓨터의 언어 체계가 다르므로,
모든 브라우저(크롬, 사파라, 익스플로러 등) 는 자바스크립트를 해석하고 실행할 수 있는 자바스크립트 엔진을 내장하고 있다. 브라우저뿐만 아니라 Node.js도 자바스크립트 엔진을 내장하고 있다. 따라서 자바스크립트는 브라우저 환경 또는 Node.js 환경에서 실행할
클라이언트단에서 서버에게 페이지 요청을 보낼 수 있는 통로로 검색창이 있습니다.우리는 개발을 하면서 URL, URI라는 단어를 들어봤을 것입니다. 저는 정확히 알지는 못하지만, 주소를 보내는 것과 같다는 느낌으로 받아들이고 해석한 경험이 있습니다.URL은 URI에 포함
디스트럭처링 할당(destructuring assignment)은 구조 분해 할당이라고도 합니다. 구조화된 배열과 같은 이터러블 또는 객체를 destructuring(비구조화, 구조 파괴)하여 1개 이상의 변수에 개별적으로 할당하는 것을 말합니다. 배열과 같은 이터러블
자바스크립트는 객체 기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 '모든 것'이 객체다. 원시 값을 제외한 나머지 값(함수, 배열, 정규 표현식 등)은 모두 객체이다. 원시 타입(primitive type) 은 단 하나의 값만 나타내지만 객체 타입(objec
데이터 타입, data type(을 줄여서 '타입'이라고도 한다)은 값의 종류를 말한다. 자바스크립트의 모든 값은 데이터 타입을 갖는다. 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다. 7개의 데이터 타입은 원시 타입(= primitive type)과 객체 타입
브라우저는 처리해야 할 특정 사건이 발생하면 이를 감지하여 이벤트(=evnet)를 발생(=trigger)시킨다. 예를들어, 클릭, 키보드 입력, 마우스 이동 등이 일어나면 브라우저는 이를 감지하여 특정한 타입의 이벤트를 발생시킨다. 만약 애플리케이션이 특정 타입 이벤트
이전 장 읽어보기 이벤트 객체의 공통 프로퍼티 앞서 말했듯이 이벤트 객체는 사용자에 의해 이벤트가 발생했을 때 동적으로 생성됩니다. 이렇게 동적으로 생성된 이벤트 객체를 활용하기 위해 자바스크립트에서는 이벤트 객체의 공통 프로퍼티를 제공합니다. | 공통 프로퍼티
변수 변수란 무엇인가 애플리케이션은 데이터를 다룬다. 아무리 복잡한 애플리케이션이라 해도 데이터를 입력(input)받아 처리하고 그 결과를 출력(output)하는 것이 전부다. 변수는 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념이다. 자바스크립트 엔진이
자바스크립트가 제공하는 7가지 데이터 타입(숫자, 문자열, 불리언, null, undefined, 심벌, 객체 타입) 은 크게 ① 윈시 타입과 ② 객체 타입으로 구분할 수 있다. 데이터 타입을 ① 원시 타입과 ② 객체 타입으로 구분하는 이유는 무엇일까? 원시 타입과 객
함수란? 수학의 함수 자바스크립트의 함수
함수를 명시적으로 호출하면 함수가 즉시 실행된다.만약 함수를 명시적으로 호출하지 않고 일정 시간이 경과된 이후에 호출되도록 함수 호출을 예약하려면 타이머 함수를 사용한다. 이를 호출 스케줄링(scheduling a call)이라 한다.자바스크립트는 ① 타이머를 생성할
비동기 프로그래밍 동기 처리와 비동기 처리 자바스크립트 엔진은 기본적으로 함수를 호출하면 ① 함수 코드가 평가되어 함수 실행 컨텍스트가 생성된다. 이때 생성된 함수 실행 컨텍스트는 실행 컨텍스트 스택(콜 스택이라고도 부름)에 푸시되고 ② 함수 코드가 실행된다.
Ajax(Asynchronous JavaScript and XML)란 자바스크립트를 사용하여 ① 브라우저가 ② 서버에게 비동기 방식으로 데이터를 요청하고, 서버가 응답한 데이터를 수신하여 웹페이지를 동적으로 갱신하는 프로그래밍 방식을 말한다.Ajax는 브라우저에서 제공
'저는 REST API를 바탕으로 백엔드 서버와 ... 어쩌구'위와 같은 말들을 나의 자기 소개서에 많이 적어냈다. 대충 무슨 느낌인지는 알 것 같았다. HTTP 요청을 보낼 때, 백엔드와 합의하에 HTTP 요청을 맞춰 HTTP REQUEST를 보내는 느낌으로 얼추 이
new Promise ? 이게 뭐야 ... async/await(?) 이거 쉽네..! 이걸로 그냥 써야지필자는 이런식으로 비동기 프로그래밍에 대한 이해를 덜 한 상태에서 async await로 바로 넘어가 작업을 시작하였다. async <-> await를 기반으로
사실 async await가 제너레이터에서 비롯되었다는 것 조차 몰랐다. 기존 한 장 요약 (프로미스) 에서도 말했지만, async await에 대해 조금 더 아는 이유는 단지 Promise 문법이 어려워서였다.then().catch().finally()와 같은 프로미
에러가 발생하지 않는 코드를 작성하는 것은 불가능하다고 볼 수 있다. 발생한 에러에 대해 대처하지 않고 방치한다면 프로그램을 강제 종료될 것이다.try catch 문을 사용해 발생한 에러를 적절하게 대응하면 프로그래밍이 강제 종료되지 않고 계속해서 코드를 실행시킬 수
모듈(module)이란 애플리케이션을 구성하는 개별적 요소로서 재사용 가능한 코드 조각을 말한다.일반적으로 모듈은 기능을 기준으로 파일 단위로 분리한다. 이때 모듈이 성립하려면 모듈은 자신만의 파일 스코프(모듈 스코프)를 가질 수 있어야 한다.자신만의 파일 스코프를 갖
스코프(scope, 유효범위) 는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념이며, 스코프의 이해가 부족하면 다른 개념을 이해하기 어려울 수 있다. 더욱이 자바스크립트의 스코프는 다른 언어의 스코프와 구별되는 특징(렉시컬 스코프, 정적 스코프)이
전역 변수의 무분별한 사용은 위험하다. 전역 변수를 반드시 사용해야 할 이유를 찾지 못한다면 지역 변수를 사용해야 한다. 이번 장에서는 전역 변수의 문제점과 전역 변수의 사용을 억제할 수 있는 방법을 알아본다.지역 변수의 생명 주기변수는 선언에 의해 생성되고 할당을 통
let, const 키워드와 블록 레벨 스코프 ① var 키워드로 선언한 변수의 문제점 ES5까지 변수를 선언할 수 있는 유일한 방법은 var 키워드를 사용하는 것이었다. var 키워드로 선언된 변수는 다음과 같은 특징이 있다.다른 언어와는 구별되는 독특한 특징으로
앞서 '\*\*객체 리터럴(https://velog.io/@junh0328/DEEP-DIVE-%ED%95%9C-%EC%9E%A5-%EC%9A%94%EC%95%BD-%EA%B0%9D%EC%B2%B4'객체 리터럴' 이외의 객체 생성 방법에 대해 알아본다.생성자 함
자바스크립트 객체는 다음과 같이 크게 3개의 객체로 분류할 수 있다.표준 빌트인 객체는 ECMAScript 사양에 정의된 객체를 말하며, 애플리케이션 전역의 공통 기능을 제공한다.표준 빌트인 객체는 ECMAScript 사양에 정의된 객체이므로 자바스크립트 실행 환경(브
객체지향 프로그래밍에서 살펴보았듯이 객체 는 상태를 나타내는 프로퍼티와 동작을 나타내는 메서드를 하나의 논리적인 단위로 묶은 복합적인 자료구조다. 동작을 나타내는 메서드는 자신이 속한 객체의 상태, 즉 프로퍼티를 참조하고 변경할 수 있어야 한다. 이때 메서드가 자신이
실행 컨텍스트(execution context)는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다. 실행 컨텍스트를 바르게 이해하면 자바스크립트가 스코프를 기반으로 식별자와 식별자에 바인딩된 값(식별자 바인딩)을 관리하는 방식과 호이스팅이 발생하는 이유, 클로저의