내 인생에서 가장 어려운 언어를 뽑아보라고 하면, 나는 자바스크립트를 말한다.정말 알면 알수록 뭐 뭐 이딴 언어가 다 있지 라는 생각이드는 언어이다.오죽하면 대학교 1학년 때부터 4학년 내내 JS로 개발을 진행했는데, 막상 제일 잘하는 언어 또는 잘 알고있는 언어가 무
노드js 공식 홈페이지 : https://nodejs.org/en/다음의 사이트에 접속하여 nodejs LTS 버전을 설치하면 된다. (LTS는 오랜 시간 동안 시스템 관리를 해주는 버전이라고 생각하면 된다.)모두 yes를 눌러주어 설치한 뒤에 Terminal
오늘은 회사에서 혼이 났다. 정확히는 딴 부서 담당자에게 기분 나쁜 추궁을 당했었다.?? : 여태까지 뭐하셨길래 지금와서 문제를 말하시는가죠?? 끝까지 집중합시다흠녀... 그냥 뻘쭘해서 나에게 탓을 몰았다고 생각하고 있다.그렇지만 기분이 안좋은 것은 변함이 없다.기분이
회사를 다니면 시험은 안보니까 좋다. 그러나, 시험을 봐도 좋으니까 방학을 되돌려줬으면 좋겠다 ㅜ 회사에서 하라는 알고리즘 공부는 안하고 JS 공부나 하련다!! 1. 값 값은 식(표현식)이 평가(또는 계산)되어 생성된 결과를 말한다 위의 예제에서, 다음의 10
ES6는 7개의 데이터 타입을 제공한다.데이터 타입은 크게 두 가지로 분류할 수 있는데 '원시 타입' 과 '객체 타입' 이다.원시 타입숫자 타입 : 숫자, 정수, 실수를 구분없이 숫자 타입만이 존재문자열 타입 : 문자열boolean 타입 : 참, 거짓undefined
기본적으로 자바스크립트에서 연산자는 c언어나 java와 크게 다를바는 없다. 따라서, 특이한 부분만 집고 넘어가도록 하자동등 비교 ( == ) (또는 추상 동등성 비교 연산자라고 한다. ) 동등 비교는 느슨한 비교를 한다. 느슨한 비교란 좌항과 우항의 피연산자를 비
명시적 타입 변환 ( 타입 캐스팅 ) : 개발자가 의도적으로 타입을 변환하는 것이다.암묵적 타입 변환 ( 타입 강제 변환, type conversion) : 자바스크립트 엔진에 의해 실행 도중에 타입이 변환되는 것을 말한다.한 가지 명심해야 할 것은 명시적 타입 변환이
자바스크립트에서는 원시 값 빼고는 모두 객체로 사용된다.즉, 함수, 정규 표현식, 배열 등 모두 객체로 구성되어있다. 또한, 객체는 원시 값과는 달리 immutable이 아닌, mutable한 값이다. 이는 추후에 다시 배워보도록 하자자바스크립트에서의 객체 표현은 다음
원시타입을 가지는 원시 값은 변경 불가능한 값이다. 반면에 객체 타입의 값, 즉 객체는 변경 가능한 값이다.원시 값을 변수에 할당하면, 변수에는 실제 값이 저장된다. 이에 비해 객체를 변수에 할당하면 변수에는 참조 값이 저장된다.이는 어떤 차이를 보이냐면, 원시 값을
자바스크립트에서 함수란 굉장히 중요한 개념이다. 단순히 c/c++ , java에서 보이는 함수와는 달리 자바스크립트에서의 핵심 개념인 스코프, 실행 컨텍스트, 클로저, this, 프로토타입, 모듈화 등이 있다.힘수의 선언(정의)은 다음과 같다.따로 함수의 반환 타입,
scope는 자바스크립트 뿐만 아니라, 여러 프로그래밍 언어에서 사용되는 개념이다. 그런데 특별히 자바스크립트에서 유별난 특징이 있어 잘 배워두어야 한다.var, let 또는 const 키워드로 선언한 변수의 스코프는 다르게 동작한다. 즉, 스코프는 변수 그리고 함수와
전역 변수의 사용은 어느 프로그래밍 언어이든지 위험하다. 이번 편에서는 자바스크립트에서 발생하는 전역 변수의 문제점들을 살펴보도록 하자변수는 선언에 의해 생성되고, 할당을 통해 값을 갖는다. 그리고 소멸하게 된다. 그렇다면 언제 소멸하고 생겨날까??지역 변수의 경우에는
var키워드로 선언한 변수는 중복 선언이 가능하다.위의 예는 var키워드로 선언한 변수는 중복 선언이 가능하다는 것을 보여준다.신기하게도, var y; 가 실행되어 undefined가 있을 것 같지만, 아니다.이는 중복 선언에 있어서 초기화문이 있는 변수 선언문은 자바
앞으로 나올 프로퍼티 어트리뷰트를 이해하기 위하여 내부 슬롯과 내부 메서드 개념에 대해 알아보자내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 pseudo property, pseudo method이다.
일반적으로 객체 리터럴 방식으로 객체를 많이 생성하지만, 생성자 함수를 통해서도 객체를 생성할 수 있다.new 연산자와 함꼐 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다. 빈 객체를 생성한 이후 프로퍼티 또는 메서드를 추가하여 객체를 완성할 수 있다
다음의 조건을 만족하는 객체를 일급 객체라고 한다.무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성 가능변수나 자료구조 (객체, 배열 등)에 저장할 수 있다.함수의 매개변수에 전달할 수 있다.함수의 반환값으로 사용할 수 있다.자바스크립트의 함수는 다음 예제와 같이
js에서 중요한 요소 중 하나이지만, 모르는 사람이 생각보다 많다. 가끔씩 회사 문제로 기본적인 js 문법이 나오는데, 그 중에 가장 많이 나오는 것이 prototype이다. 왜냐면 모르면 그냥 맞아야 하기 때문이다. 자바스크립트는 명령형, 함수형, 프로토타입 기반 객
이전 포스팅에서 살펴본 것과 같이, 생성자 함수에 의해 생성된 인스턴스는 프로토타입의 constructor 프로퍼티에 의해 생성자 함수와 연결된다.이때, constructor 프로퍼티가 가리키는 생성자 함수는 인스턴스를 생성한 생성자 함수와 같다.위는 new를 이용한
지난 번의 예제이다. 어떻게 me와 Person.prototype은 hasOwnProperty 프로퍼티를 가지고 있을까?? 이는 프로토타입 체인 덕분이다.Object.getPrototypeOf()을 이용하면 prototype이 무엇인지 확인할 수 있다. 이를 이용하여
Object.create에 의한 직접 상속이 가능하다. Object.create 메서드는 명시적으로 프로토타입을 지정하여 새로운 객체를 생성한다. Object.create메서드도 다른 객체 생성 방식과 마찬가지로 추상 연산 OrdinaryObjectCreate를 호출한
객체는 상태를 나타내는 프로퍼티와 동작을 나타내는 메서드로 구성된다.( 이 둘을 합쳐서 간단하게 프로퍼티라고도 한다.)메서드는 자신이 속한 객체의 상태, 즉 프로퍼티를 참조하고 변경해야할 때가 있다. 이 때 메서드가 자신이 속한 객체의 프로퍼티를 참조하려면 먼저 자신이
실행 컨텍스트는 자바스크립트의 동작 원리를 담고 있는 핵심 개념이다. 실행 컨텍스트를 바르게 이해하면 자바스크립트가 스코프를 기반으로 식별자와 식별자에 바인딩된 값(식별자 바인딩)을 관리하는 방식과 호이스팅이 발생하는 이유, 클로저의 동작 방식, 그리고 태스크 큐와 함
예제 코드를 다시 한 번 살펴보자foo 함수가 호출되면 전역 코드의 실행을 일시 중단하고 foo 함수 내부로 코드의 제어권이 이동한다. 그리고 함수 코드를 평가하기 시작한다. 함수 코드 평가는 아래 순서로 진행된다.함수 실행 컨텍스트 생성함수 렉시컬 환경 생성함수 환경
프론트엔드 개발자 면접에서 가장 많이 등장하는 개념이 아닌가 싶다. 그러나 제대로 대답하는 사람은 10명 중 1명도 보기 힘들다는 현직자 분의 글을 읽은 적이 있다. 대부분이 클로저는 js에서 private 역할을 하기위해 사용한다고 말했다고 하는데, 사실 이는 클로저
자바스크립트는 프로토타입 기반 객체지향언어이다. 비록 다른 객체지향 언어와는 다른 차이점이 있지만 강력한 객체지향 능력을 지니고 있는 것은 맞다.프로토타입 기반 객체지향 언어는 클래스가 필요 없는 객체지향 프로그래밍 언어이다. ES5에서는 클래스 없이도 함수와 프로토타
클래스 2편으로 1편을 먼저 보고와주길 바란다. 인스턴스 생성과 this 바인딩new연산자와 함께 클래스를 호출하면 constructor의 내부 코드가 실행되기에 앞서 암묵적으로 빈 객체가 생성된다. 이 빈 객체가 바로 클래스가 생성한 인스턴스이다. 이때 클래스가 생성
ES6 이전의 모든 함수는 일반 함수로서 호출할 수 있는 것은 물론 생성자 함수로서 호출할 수 있다. 다시말해 es6이전의 모든 함수는 callable이면서 constructor이다.재밌는 것은 객체에 바인딩된 함수조차도 constructor라는 것이다. 즉, cons
기본적으로 자바스크립트의 배열은 객체타입으로 여러가지 프로퍼티를 가지고 있다. 가장 대표적인 프로퍼티가 length이다.배열은 객체로, Array 생성자 함수를 가지고 있다. 때문에 프로토타입도 Array.prototype을 갖는다. 사실 자바스크립트의 배열은 일반적인
고차 함수(Higher-Order Function, HOF)는 함수를 인수로 전달받거나, 함수를 반환하는 함수를 말한다. 자바스크립트의 함수는 일급 객체이므로 함수를 값처럼 인수로 전달할 수 있으며 반환할 수도 있다. 고차 함수는 외부 상태의 변경이나 가변(mutabl
웹 개발자라면 당연히 알아야 할 과정이지만, 의외로 많은 사람들이 모른다. 물론 필자도 처음에 웹을 배울 때 이런거를 모르고 하다가 기본기가 부족해서 공부하다가 나중에서야 알았다. 사실 이 글은 그렇게 쉽게, 그리고 편하게 작성된 글이 아니다. 더 자바스크립트 위주의