자바스크립트에서 this는 난관이다. 늘 그렇듯 공부를 해도 까먹고 까먹어서 결국 한번 기록해본다. 역시 반복학습이 답이라고 생각한다.브라우저에서 this는 기본적으로 window이다. 그렇다면 window가 아닌 경우도 있는가?객체 메서드 안에서 this는 객체를 가
x를 함수 내에서 선언했음에도 console.log(x)는 10의 값이 나온다. foo함수가 실행되면 자바스크립트는 x변수를 찾아야 x를 할당할 수 있기 때문에 x변수가 어디에서 선언되었는지 스코프 체인을 통해 찾기 시작한다.자바스크립트 엔진은 먼저 foo함수 스코프에
자바스크립트는 ES6기준으로 7개의 데이터 다입을 제공한다. 숫자: 숫자. 정수와 실수 구분없이 하나의 숫자타입. 구분이 없다는 것은 정수로 표시된다 해도 사실은 실수라는 것을 의미한다.문자열불리언: 참/거짓undefined: var키워드로 선언된 변수에 암묵적으로 할
Axios는 Nodejs와 Browser를 위한 promise 기반 HTTP 통신 라이브러리다. 브라우저와 노드 모두에서 같은 코드베이스로 동작한다. server에서는 http 모듈을, client에서는 XMLHttpRequests을 사용한다.Make XMLHttpRe
변수는 프로그래밍 언어에서 데이터를 관리하기 위한 핵심 개념이다. 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 도는 그 메모리 공간을 식벽하기 위해 붙인 이름을 말한다.간단히 말하면, 변수는 프로그래밍 언어에서 값을 저장하고, 참조하는 매커니즘이다. 값의
let, const가 나오기 이전에는 var를 사용했다. 그렇다면, var와 let, const의 차이는 무엇일까. 핵심은 var는 함수스코프, let, const는 블록단위 스코프를 가진다는 것이다. 그 외에도 선언, 할당, 호이스팅 등의 특징을 발견할 수 있다.재선
자바스크립트는 typeof라는 문법을 통해 데이터의 타입을 확인할 수 있다. 하지만, typeof가 모든 것을 알려줄까? 원시값의 경우 문제가 없지만, 레퍼런스 타입의 데이터들은 typeof로 판별할 때 문제가 생길 수 있다.numberstringbooleannullu
둘은 개념 이해가 어렵다. 비어있는 값을 명시적으로 표현하는 방법 아무것도 지정하지 않았을 때의 임시적인 지정값. 선언은 했지만 값은 정의되지 않고, 할당되지 않은 상태이다. undefined, null은 값이 없거나, 정의되지 않은 것이다. 혹은 없다는 것을 명시적으
동등연산자를 사용하면 형변환이 일어난다(type casting). 일반적인 동등연산자를 사용할 경우 내부적으로 타입캐스팅이 일어난다. 엄격한 동등연산자를 사용해서, 엄격하게 타입을 체크하는 것이 좋다.lint설정을 통해 eqeq사용을 막는것도 방법이다.자바스크립트에서는
사람이 생가각하는 숫자는 10진수이다. 하지만 컴퓨터의 기본 숫자는 2진수이다. 10진수와 2진수를 왔다갔다하면, 소수점의 문제가 생길 수 있다.자바스크립트에서는 부동소수점 방법을 통해 문제를 해결하려고 하고 있다.isNaN은 자바스크립트에서 숫자를 판별하기가 어렵다는
위와 같은 코드에서 함수 결과물에 1, 45는 과연 포함되는 것일까?위와 같은 코드에서 함수 결과물에 20살은 과연 포함되는 것일까?함수 이름만봐서는 알 수 없다는 문제. 그렇다면 어떻게 해야할까?최소값와 최대값을 다룬다면 최소값와 최대값포함 여부를 결정해야 한다(이상
데이터 선택시 처음은 포함되지만, 끝은 포함되지 않는 경우.처음은 고정, 끝이 많이 변하는 경우함수 이름만봐도 어떤 기능을 하는지 알 수 있다파라미터 이름도 잘 지정해줘서, 어떤 값을 넣어줘야하는지 파악이 가능하다결국, 이름을 잘 짓자는 것
시작과 끝이 있다는 데이터를 다룰 때
prefix/suffix 용어를 사용하는 경우react hooks의 use~jQuery의 $ ~underscore \_.~\_REQUEST\_SUCCESS\_FAILURE
함수의 이름, 매개변수의 순서만 잘 지켜도, 그 자체가 경계가 된다.매개변수가 2개인 함수는 함수이름과 매개변수로 시작과 끝이 있다고 추론이 가능앞서 봤던 mix/max, first/last, bigin/end ...객체로 받기...사용arguements 객체 활용매개
문법은 중요한가? 중요하다면 왜 그럴까? 프로그래머는 프로그래밍 언어를 사용하는 사람이다.프로그래머는 언어를 통해 컴퓨터를 이해시켜야 한다. 문법에 에러가 있다면 컴퓨터를 프로그래머가 요청한 명령을 처리하지 못한다. 그치만 문법을 지킨다는 것은 쉽지 않다. 특히 문법이
삼항연산자는 언제 사용하는가? 나만의 기준이 있는가? 일관성 있게 사용하고 있는가? 아니면 과도한 숏코딩(Short coding)을 하기 위해 사용하고 있는가?삼항연산자를 사용하는 경우는 많지만 중요한 것은 일관성을 가지고 삼항연산자를 사용하는게 중요하다.삼항연산자는
있는 그대로 저장되는 데이터를 의미한다. 예를들어 변수에 7을 할당하면, 7이 출력된다. 이렇게 있는 그대로 저장되는 데이터가 원시타입이다.BooleanStringNumberundefinednullSymbol원시값을 변수에 할당하면 값이 복사되어 들어간다. 즉, 원시값
유효범위. 변수의 접근성과 생존시간을 제어에 대한 개념이다. 전역에서는 함수 스코프 안으로 접근할 수 없다.스코프는 이름이 충돌하는 문제를 덜어주고, 자동으로 메모리를 관리한다.자바스크립트의 스코프는 전역, 함수, 블록스코프 3가지가 있다.스크립트 어디에서든 접근이 가
클로저는 자바스크립트 고유의 개념이 아니다. 함수를 일급 객체로 취급하는 함수형 프로그래밍 언어에서 사용되는 중요한 특성이다. MDN에서는 클로저를 다음과 같이 정의한다클로저는 함수와 그 함수가 선언된 렉시컬 환경과의 조합이다.outerFunc 함수 내부에서 중첩 함수
생성자 함수를 사용해서 객체를 생성할 수 있다. 생성자함수(constructor)란 new 연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수를 말한다. 생성자 함수에 의해 생성된 객체를 인스턴스(instance)라고 한다연산자 new생성자 constructor인스
둘다 undefined?test: testtestValue:Error함수선언식: function name() {}함수표현식: const name = function() {}함수선언은 코드를 실행할 때 함수를 포함하는 스코프 최상단으로 끌어올려진다. 그래서 함수 선언 전
함수를 호출하는 객체를 의미한다.this를 이용해 함수를 다른 객체에서도 재사용 가능하다일반적으로 this의 값은 자동으로 할당된다. 하지만 상황에따라 제어 가능하다.call 메서드는 this의 값을 바꿀수도, 함수를 실행할 때 사용할 인수도 전달가능하댜.call(바인