함수 스코프는 함수를 생성할 때 만들어지는 스코프이고, 블록 스코프는 블록 {}을 생성할 때 만들어지는 스코프이다. 자바스크립트는 기본적으로 함수 스코프를 따르는데, 함수가 아닌 문에서 선언한 변수는 어디서든 접근 및 수정이 가능하여 오류의 원인이 될 수 있다.
호이스팅은 변수와 함수의 선언 전에 메모리 공간을 미리 할당하는 것이다. 즉, 변수와 함수의 선언과 할당을 분리한 후, 선언만 코드의 최상단으로 옮기는 것이다. var로 선언한 변수는 호이스팅 되어 undefined로 변수를 초기화(할당)한다. 반면, let과 cons
JavaScript에는 변수를 선언할 수 있는 3가지 방법: let, const, var. 그들의 정의와 차이에 대해 알아보자.
typeof 연산자는 피연산자의 자료형을 문자열로 반환한다.
JavaScript에는 truthy(참 같은 값)와 falsy(거짓 같은 값)이 있다. 이들은 불리언(boolean)을 기대하는 문맥에서 각각 true와 false로 평가된다.
Mutable은 내용을 변경할 수 있음을 의미한다. Immutable은 내용을 변경할 수 없음을 의미한다.
indexOf() 메서드는 String 객체에서 찾으려는 문구의 첫 번째 index를 반환한다. includes() 메서드는 String 객체에서 특정 문자열이 있는지 여부를 true 또는 false로 반환한다.
1. string은 immutable하다. 2. 재할당하지 않는 한 값은 변하지 않는다. 3. string 메서드도 immutable하다. 4. string + 다른 타입을 연산하면 string 타입으로 나온다.
substr() 메서드는 더이상 사용하지 않는 것이 권장된다. substring() 메서드는 문자열의 시작과 끝 index 사이의 부분 문자열을 반환한다. slice() 메서드는 substing() 메서드와 유사하지만, 몇 가지 차이가 있다.
정규 표현식(Regular expressions)은 문자열에서 특정 문자의 조합을 찾는데 이용되는 패턴이다.
`parseInt()`, `Number()`, `Number.parseInt()`는 문자열에서 숫자를 추출할 때 사용하는 등 비슷한 부분이 있지만, 분명한 차이가 있어서 사용할 때 조심해야 한다.
innerHTML 속성은 요소 내에 포함된 HTML 또는 XML 마크업을 가져오거나 설정한다. innerText 속성은 요소와 그 자손의 렌더링 된 텍스트 콘텐츠를 나타낸다. textContent 속성은 노드와 그 자손의 텍스트 콘텐츠를 표현한다.
JavaScript의 타입은 원시 값과 참조 값으로 나뉜다. 원시 값은 한 변수에 하나의 값을 저장한다. 참조 값은 한 변수에 여러 개의 데이터를 저장하고 있는 주소를 저장한다.
toString()은 숫자를 문자열로 변환할 때 사용한다. 이와 반대로 parseInt()는 문자열을 숫자로 변환할 때 사용한다. 두 함수는 공통점이 있는데, 어떤 수를 특정 진수로 변환할 때 사용한다. 이때, 다음과 같은 로직의 차이가 있어서 사용에 주의해야 한다.
JavaScript는 런타임에 타입이 결정되는 동적 언어이다. 따라서 매번 타입을 작성하지 않아도 된다는 장점이 있지만, 런타임에 타입이 예측이 어려울 때가 있어서 에러의 원인이 될 때가 많다.
https://google.github.io/styleguide/jsguide.html 구글에서 작성한 JavaScript 가이드이다.
function factory(함수 공장)는 함수를 만드는 함수이다. JavaScript에는 어휘적 환경이 존재한다. 어휘적 환경은 내부 함수가 선언되었을 때, 외부 함수가 리턴된 이후에도 외부 함수의 지역 변수를 저장하고 있는 것이다.
JavaScript는 전역변수를 기초로 하므로, 코드 안에 전역변수가 많아질 때 변수의 이름이 겹쳐서 오염되기 쉽다. 따라서 변수의 범위를 적절하게 조절하여 전역변수의 사용을 최대한 줄여야 한다.
DOM은 웹 문서를 위한 프로그래밍 인터페이스로, 웹에서 문서의 구조와 내용을 구성하는 객체의 데이터 표현이다. DOM은 JavaScript 언어의 일부가 아니라, 웹 사이트를 구축하는데 사용되는 웹 API이다.
일급 객체(firts-class object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 말한다. 보통 함수에 전달인자로 넘기기, 수정하기, 변수에 대입하기와 같은 연산을 지원할 때 일급 객체라고 한다.
고차 함수는 함수를 전달인자로 받거나, 함수를 리턴하는 함수이다. 콜백 함수는 함수의 전달인자로 전달되는 함수이다. 커링 함수는 함수를 리턴하는 함수이다.
JavaScript에서 클래스는 특별한 함수이다. 클래스는 객체를 생성하기 위한 템플릿으로 데이터와 이를 조작하는 코드를 하나로 추상화한다. 클래스는 ES5에서 도입되었고, ES6에 클래스를 작성하는 문법이 새롭게 추가되었다.
JavaScript는 객체 기반의 스크립트 프로그래밍 언어이다. JavaScript에서의 객체 지향 프로그래밍은 다른 프로그래밍 언어에서의 객체 지향 프로그래밍과 다른 부분이 있다.
JavaScript에서 프로토타입은 객체를 상속하기 위해 사용한다. JavaScript는 프로토타입 기반 언어라 불린다. 이는 모든 객체들이 메서드와 속성을 상속 받기 위한 템플릿으로써 프로토타입 객체를 가진다는 의미이다.
참고문헌 코드스테이츠 유어클래스
Promise 객체는 콜백 지옥을 개선하기 위해 도입되었다. Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타낸다.
재귀란 어떠한 것을 정의할 때 자기 자신을 참조하는 것이다. 재귀 함수란 함수를 정의할 때 자기 자신을 호출하는 함수이다. 재귀를 사용해야 하는 상황과 그 예시에 대해 알아보자.
Temporal Dead Zone(TDZ)은 변수에 접근할 수 없는 블록 영역으로 컴퓨터가 변수를 어떤 값으로 아직 초기화 하지 않은 영역이다. TDZ에서 변수에 접근하면 Reference Error가 발생하게 된다.