변수 선언문보다 변수를 참조하는 코드가 앞에 있다. 자바스크립트 코드는 인터프리터에 의해 한 줄씩 순차적으로 실행되므로 console.log(test)가 먼저 실행되고 순차적으로 다음 줄에 있는 코드를 실행한다.따라서 console.log(test)가 실행되는 시점에는
값을 할당 할 때에는 할당 연산자인 =를 사용한다. 할당 연산자는 우변의 값을 좌변의 변수에 할당한다.변수 선언과 값의 할당을 2개의 문으로 나누어 표현한 코드와 변수 선언과 값의 할당을 하나의 문으로 단축 표현한 코드는 정확히 동일하게 작동한다.즉, 자바스크립트 엔진
위의 예시를 보자 num 변수의 최종적인 값은 2이다.변수에 값을 재할당 하게되면 본래의 기존에 할당되어 있던 메모리의 값을 변경하는 것이 아니고 새로운 메모리에 값을 추가하게 된다.num 변수의 이전의 값인 undefined와 1은 어떤 변수도 값으로 가지고 있지 않
식별자는 어떤 값을 구별해서 식별해낼 수 있는 고유한 이름을 말한다. 식별자는 다음과 같은 네이밍 규칙을 준수해야 한다.식별자는 특수문자를 제외한 문자, 숫자, 언더스코어(\_), 달러 기호($)를 포함할 수 있다.단, 식별자는 특수문자를 제외한 문자, 언더스코어(\_
자바스크립트(ES6 기준)는 7개의 데이터타입을 제공하며 7개의 데이터 타입은 원시타입과 객체타입으로 분류할 수 있다.원시 타입의 종류에는숫자(number) 타입문자열(string) 타입불리언(boolean) 타입undefined 타입null 타입심벌(symbol) 타
정적 타입 언어(static type)는 변수를 선언할 때 변수에 선언할 값의 종류, 즉 데이터 타입을 사전에 선언해야 한다. 이를 명시적 타입 선언이라고 한다.정적 타입 언어는 변수의 타입을 변경할 수 없으며, 변수에 선언한 타입에 맞는 값만 할당할 수 있다. 정적
동등 비교 연산자(loose equality)와 일치 비교 연산자(strict equality)는 좌항과 우항의 피연산자를 같은 값으로 평가되는지 비교하여 불리언 값으로 반환한다.하지만 비교하는 엄격성의 정도가 다르다. 동등 비교 연산자는 느슨한 비교를 하지만 일치 비
typeof 연산자는 피연산자의 데이터 타입을 7가지 문자열 "string", "number", "boolean", "undefined", "symbol", "object", "function" 중 하나를 반환한다. 여기서 주의할 점은 typeof 연산자가 반환하는 문
ES7에서 도입된 좌항의 피연산자를 밑으로, 우항의 피연산자를 지수로 거듭 제곱하여 숫자 값을 반환한다.지수 연산자가 도입되기 전에는 Math.pow 메서드를 사용했다.음수를 거듭제곱의 밑으로 사용하여 계산하려면 다음과 같이 괄호로 묶어야 한다.지수 연산자는 다른 산술
자바스크립트 엔진은 표현식을 평가할 때 개발자의 의도와는 상관없이 코드의 문맥을 고려해 암묵적으로 데이터 타입을 강제로 변환할 때가 있다. 위의 예시처럼 표현식을 평가할 때 코드의 문맥에 부합하지 않는 다양한 상황이 발생할 수 있다. 이때 프로그래밍 언어에 따라 에러를
개발자의 의도의 따라 명시적으로 타입을 변경하는 방법은 다양하다. 표준 빌트인 생성자 함수를 new 연산자 없이 호출하는 방법과 빌트인 메서드를 사용하는 방법, 그리고 암묵적 타입 변환을 이용하는 방법이 있다.문자열 타입이 아닌 값을 문자열 타입으로 변환하는 방법은 다
논리합(||) 또는 논리곱(&&) 표현식의 평가 결과는 불리언 값이 아닐 수도 있다.논리곱(&&) 연산자는 두 개의 피연산자가 모두 true일 때 true값을 반환하며 논리곱 연산자는 좌항에서 우항으로 평가가 진행된다.첫 번째 피연산자 'Cat' 은 Truthy 값이므
ES11(ECMAScript2020) 에서 도입된 옵셔널 체이닝 연산자 ?.는 좌항의 피연산자가 null 또는 undefined 인 경우 undefined를 반환하고 그렇지 않을 경우에는 우항의 프로퍼티 참조를 이어간다.옵셔널 체이닝 연산자는 객체를 가리키기를 기대하는
ES11(ECMAScript2020)에서 도입된 null 병합 연산자 ??는 좌항의 피연산자가 null 또는 undefiend 일 경우 우항의 피연산자를 반환하고 그렇지 않으면 좌항의 피연산자를 반환한다. null 병합 연산자는 변수의 기본값을 설정할 때 유용하다.nu
객체 리터럴의 프로퍼티는 프로퍼티의 키(key)와 값(value)으로 구성되어 있다. 프로퍼티에 값은 식별자에 할당된 표현식일 수도 있다.ES6에서는 프로퍼티의 키와 변수의 이름이 동일한 이름일 때 프로퍼티 키를 생략하고 사용이 가능하다. 아래의 예시를 보자.문자열 또
원시 타입의 값은 변경할 수 없는 값을 말한다. 즉, 한번 생성된 원시 값은 읽기 전용 값으로서 변경할 수 없다는 것을 말한다.값을 변경할 수 없다는 말을 좀 더 구체적으로 말하자면, 먼저 식별자인 변수와 값을 구분해야 한다. 변수는 하나의 값을 저장하기 위해 화보한
객체는 프로퍼티의 개수가 정해져 있지 않으며, 동적으로 추가되고 삭제될 수 있다. 또한 프로퍼티의 값에도 제약이 없다. 따라서 객체는 원시 값과 같이 확보해야할 메모리 공간의 크기를 사전에 미리 정해 둘 수 없다.자바스크립트 객체는 프로퍼티 키를 인덱스로 사용하는 해시
함수 선언문은 함수 리터럴과 형태과 동일하다. 단, 함수 리터럴은 함수 이름을 생략할 수 있지만 함수 선언문은 함수 이름 생략이 불가능하다.함수 선언문의 함수 이름은 함수 몸체 내에서만 참조할 수 있는 식별자이다. 이는 함수 몸체 외부에서 함수 이름을 참조할 수 없으므
위의 예시처럼 함수 선언문으로 정의한 함수는 함수 선언문 이전에 호출이 가능하다. 하지만 함수 표현식으로 정의한 함수는 함수 표현식 이전에 호출이 불가능하다. 이는 함수 선언문과 함수 표현식의 생성 시점이 다르기 때문이다.모든 선언문이 그렇듯 함수 선언문도 결국 코드의
아래 내용은 나무위키에서 재귀 함수를 정의한 내용이다.재귀 함수는 정의 단계에서 자신을 재참조하는 함수를 뜻한다.어떤 사건이 자기 자신을 다시 자기 자신을 사용하여 정의될 때 재귀적(recursive)이라고 한다.재귀함수의 경우에는 보통 반복되는 처리를 위해 사용한다.
구조 분해 할당 구문은 배열이나 객체의 속성을 해체하여 그 값을 개별 변수에 담을 수 있게 하는 JavaScript 표현식입니다.위 내용은 MDN에서 정의하는 구조 분해 할당 내용입니다.위의 정의된 내용만으로 저는 어느정도 이해는 되지만 간단한 예시를 통해서 좀 더 알
JavaScript spread 연산자(...)를 사용하면 기존 배열이나 객체의 전체 또는 일부를 다른 배열이나 객체로 빠르게 복사할 수 있습니다.위 내용은 w3schools에서 spread 연산자를 설명하는 내용입니다.위의 내용만으로 이해하기엔 확실히 와 닿지 않습니
rest 파라미터는 말 그대로 함수의 파라미터에서 뒤에 남는 요소들을 배열로 받습니다.
콜백 함수(Callback Function)란? > > 함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수를 콜백 함수(Callback Function)라고 하며, 매개 변수를 통해 함수의 외부에서 콜백 함수를 전달받은 함수를 고차 함수(HOF:Higher-Or
Prototype이란? JavaScript에서는 객체를 상속하기 위하여 프로토타입이라는 방식을 사용합니다. > JavaScript는 다른 클래스 기반 객체지향 언어들과는 다른 프로토타입 기반 언어(prototype-based language)입니다. 프로토타입 객체
객체란?원시 타입은 단 하나의 값만 나타내지만 객체 타입은 다양한 타입의 값을 하나의 단위로 구성한 복합적인 자료구조입니다. 또한 원시 타입의 값, 즉 원시 값은 변경 불가능한 값(Immutable value) 이지만 객체 타입의 값은 변경이 가능한 값(Mutable
재귀함수란?재귀함수(recursive function)는 함수가 자기 자신을 호출하는 것을 말합니다. 즉, 함수가 실행 중에 자기 자신을 호출하여 문제를 해결하는 방법입니다. 이를 통해 반복문을 사용하지 않고도 문제를 해결할 수 있습니다.종료 조건은 필수 재귀 함수는
실행 컨텍스트(Execution Context)란?실행 컨텍스트란 자바스크립트 엔진이 코드를 실행하기 위해 필요한 정보들을 가진 환경을 추상화 하기위해 객체 형태로 나타낸 것을 말한다.위의 내용으로만 실행 컨텍스트를 이해하기는 어려울 수 있다.차근차근 정리해보며 실행