자바스크립트

    [JavaScript] 자바스크립트 엔진과 자바스크립트 런타임

    자바스크립트란? 자바스크립트는 프로그래밍 언어이다. 자바스크립트 런타임이란? 런타임이란 프로그래밍 언어가 구동되는 환경을 말한다. 자바스크립트 런타임이란 자바스크립트가 구동되는 환경을 말한다. 자바스크립트 런타임의 종류로는 웹 브라우저(크롬, 파이어폭스, 익스플로러 등) 프로그램과 Node.js 라는 프로그램이 있다. 프로그램들에서 자바스크립트가 구동되기 때문에 자바스크립트 런타임이라고 한다. V8 엔진이란? V8은 자바스크립트 엔진 중 하나이다. V8은 오픈 소스 자바스크립트 엔진 중 하나이다. 자바스크립트와 웹어셈블리(WebAssembly) 엔진이다. 크롬 웹 브라우저와 Node.js 등에서 사용되고 있다. V8은 자바스크립트를 바이트코드로 컴파일하고 실행하는 방식을 사용한다. 웹어셈블리란? 웹어셈블..

    [JavaScript] Deep Dive 모던자바스크립트 - 타입변환과 단축 평가

    09장. 타입 변환과 단축 평가 9.1 타입 변환이란? 개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환(explicit coercion) 또는 타입 캐스팅(type casting)이라 한다. let x = 10; // 명시적 타입 변환 // 숫자를 문자로 타입 캐스팅한다. let str = x.toString(); console.log(typeof str, str); // string 10 // 값의 타입만 변할 뿐 값은 동일하다 console.log(typeof x, x); // number 10 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환되기도 한다. 이를 암묵적 타입 변환(implicit coercion) 또는 타입 강제 ..

    [JavaScript] Deep Dive 모던자바스크립트 - 제어문

    08장. 제어문 제어문(control flow statement)은 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용한다. 일반적으로 코드는 위에서 아래 방향으로 순차적으로 실행된다. 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다. 8.1 블록문 블록문(block statement/compound statement)은 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다. 자바스크립트는 블록문을 하나의 실행 단위로 취급한다. 블록문은 단독으로 사용할 수도 있으나 일반적으로 제어문이나 함수를 정의할 때 사용하는 것이 일반적이다. // 블록문 { var foo = 10; } // 제어문 var x = 1; if(x < 10) { x++;..

    [JavaScript] Deep Dive 모던자바스크립트 - 연산자

    07장. 연산자 연산자(operator)는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만든다. 이때 연산의 대상을 피연산자(operand)라 한다. 피욘산자는 값으로 평가될 수 있는 표현식이어야 한다. 그리고 피연산자와 연산자의 조합으로 이뤄진 연산자 표현식도 값으로 평가될 수 있는 표현식이다. 7.1 산술 연산자 산술 연산자(arithmetic operator)는 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만든다. 산술 연산지 불가능한 경우, NaN을 반환한다. 7.1.1 이항 산술 연산자 이항(binary) 산술 연산자는 2개의 피연산자를 산술 연산하여 숫자 값을 만든다. 이항 산술 연산자 의미 부수 효과 + 덧셈 X - 뺄셈..

    [JavaScript] Deep Dive 모던자바스크립트 - 데이터 타입

    06장. 데이터 타입 자바스크립트의 모든 값은 데이터 타입을 갖는다. 자바스크립트(ES6)는 7개의 데이터 타입을 제공한다. 7개의 데이터 타입은 원시 타입(primitive type)과 객체 타입(object/reference type)으로 분류할 수 있다. 구분 데이터 타입 설명 원시 타입 숫자(number) 타입 숫자, 정수와 실수 구분 없이 하나의 숫자 타입만 존재 문자열(string) 타입 문자열 불리언(boolean) 타입 논리적 참(true)과 거짓(false) undefined 타입 var 키워드로 선언된 변수에 암묵적으로 할당되는 값 null 타입 값이 없다는 것을 의도적으로 명시할 때 사용하는 값 심벌(symbol) 타입 ES6에서 추가된 7번째 타입 객체타입 객체, 함수, 배열 등 6..

    [JavaScript] Deep Dive 모던자바스크립트 - 표현식과 문

    05장. 표현식과 문 5.1 값 값(value)은 식(표현식(expression))이 평가(evaluate)되어 생성된 결과를 말한다. 모든 값은 데이터 타입을 가지며, 메모리에 2진수, 즉 비트(bit)의 나열로 저장된다. 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름이다. 따라서, 변수에 할당되는 것은 값이다. 5.2 리터럴 리터럴(literal)은 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법(notation)을 말한다. 자바스크립트 엔진은 코드가 실행되는 시점인 런타임(runtime)에 리터럴을 평가해 값을 생성한다. 즉,리터럴은 값을 생성하기 위해 미리 약속한 표기법이라고 할 수 있다. 리터럴 예시 비고 ..

    [JavaScript] Deep Dive 모던자바스크립트 - 변수

    [JavaScript] Deep Dive 모던자바스크립트 - 변수

    04장. 변수 4.1 변수란 무엇인가? 왜 필요한가? 변수는 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념이다. 변수란 무엇인지 그리고 왜 필요한지 살펴보자. 10 + 20 사람이 위 식을 계산하려면 10, 20, + 라는 기호를 알고 의미를 해석할 줄 안다면 두뇌로 기억하여 풀어나갈 수 있다. 반면에 컴퓨터, 자바스크립트는 + 연산을 수행하기 위해 먼저 + 연산자의 좌변과 우변의 숫자 값 즉, 피연산자(operand)를 기억한다. 컴퓨터는 CPU를 사용해 연산하고, 메모리를 사용해 데이터를 기억한다. 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체다. 컴퓨터는 메모리 셀의 크기, 1바이트 단위로 데이터를 저장하거나 읽어 들인다. 컴퓨터는 모든 데이터를 2진수로 처리한다. 따라서 메모리에 저..

    [JavaScript] Deep Dive 모던자바스크립트 1~2장

    [JavaScript] Deep Dive 모던자바스크립트 1~2장

    영풍문고 방문한 김에 부트캠프에서 추천해줬었던 책이 생각이나 읽다가 구매까지하게 되었다. 구매해서 읽다보니 나름 재미있다는 생각이 들었고 오늘부터 매일 읽으면서 TIL을 작성해야겠다 생각했다. 나를 위한 공부라 아마도 다른사람이 보기에 굉장히 불친절 할 것이라 예상이 된다. 그럼 각설하고 시작하겠다. 01장. 프로그래밍 1.1 프로그래밍이란? 컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션이다. 0과 1밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항을 설명하는 작업이며, 그 결과물이 바로 코드다. 문제 해결 방안을 고려할 때 컴퓨터의 입장에서 문제를 봐야하는데, 이때 필요한 것이 컴퓨팅 사고(Computational thinking)이다. 컴퓨팅 사고의 예시로, 이처럼 "걷다" ..