
자바스크립트의 기본 개념과 동작 원리를 정확히 이해하는 것이 중요!
개인적인 공부를 하면서 중요한 내용을 정리한 형식이기 때문에 오류가 있을 수 있습니다.
피드백 주시면 정말 감사하겠습니다.
오늘 배운 내용
- 제어문
- 타입 변환과 단축 평가
- 객체 리터럴
- 원시 값과 객체의 비교
- 함수
- 스코프
알고 있던 내용
- 개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환이라 한다
- 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 변환하는 것을 암묵적 타입 변환이라 한다
- 원시 타입의 값, 즉 원시 값은 변경 불가한 값이지만 객체 타입의 값, 즉 객체는 변경 가능한 값이다
- 객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다
- 프로퍼티 값이 함수일 경우, 일반 함수와 구분하기 위해 메서드라 부른다
- 빈 문자열도 프로퍼티 키로 사용할 수 있다
- 메서드 내부에서 사용한 this 키워드는 객체 자신을 가리키는 참조변수다
- 대괄호 프로퍼티 접근 연산자 내부에 지정하는 프로퍼티 키는 반드시 따옴표로 감싼 문자열이어야 한다
- delete 연산자는 객체의 프로퍼티를 삭제한다
- 이상적인 함수는 한 가지 일만 해야 하며 가급적 작게 만들어야 한다
- repeat 함수는 매개변수를 통해 전달받은 숫자만큼 반복하며 호출한다
- 상위 스코프에서 유효한 변수는 하위 스코프에서 자유롭게 참조할 수 있지만 하위 스코프에서 유효한 변수를 상위 스코프에서 참조할 수 없다
몰랐던 내용
- 암묵적 타입 변환은 기존 변수 값을 재할당하여 변경하는 것이 아니다
- 두 번째 피연산자가 논리곱 연산자 표현식의 평가 결과를 결정한다 ('Cat' && 'Dog' // "Dog")
- 논리합 연산자는 논리 연산의 결과를 결정한 첫 번째 피연산자가 그대로 반환한다 ('Cat' || 'Dog' // "Cat)
- 단축 평가는 표현식을 평가하는 도중에 평가 결과가 확정된 경우 나머지 평가 과정을 생략하는 것을 말한다
- 옵셔널 체이닝 연산자 ?.는 좌항의 피연산자가 null 또는 undefined 경우 undefined를 반환하고, 그렇지 않으면 우항의 프로퍼티 참조를 이어간다
- null 병합연산자 ??는 좌항의 피연산자가 null 또는 undefined인 경우 우항의 피연산자를 반환하고, 그렇지 않으면 좌항의 피연산자를 반환한다
- 인스턴스란 클래스에 의해 생성되어 메모리에 저장된 실체를 말한다
- 식별자 네이밍 규칙을 따르지 않는 이름에는 반드시 따옴표를 사용해야 한다
- 불변성 : 변수 값을 변경하기 위해 원시 값을 재할당하며 새로운 메모리 공간을 확보하고 재할당한 값을 저장한 후, 변수가 참조하던 메모리 공간의 주소를 변경한다
- 문자열은 유사 배열이므로 배열과 유사하게 인덱스를 사용해 각 문자에 접근할 수있다 하지만 문자열은 원시 값이므로 변경할 수 없다
- 두 변수의 원시 값은 서로 다른 메모리 공간에 저장된 별개의 값이 되어 어느 한쪽에서 재할당을 통해 값을 변경하더라도 서로 간섭할 수 없다
- 얕은 복사는 객체의 참조값(주소 값)을 복사하고, 깊은 복사는 객체의 실제 값을 복사한다
- 자바스크립트에는 "참조에 의한 전달"은 존재하지 않고 "값에 의한 전달"만이 존재한다고 말할 수 있다
- 함수 선언문이 코드의 선두로 끌어 올려진 것처럼 동적하는 자바스크립트 고유의 특징을 함수 호이스팅이라 한다
- 즉시 실행 함수는 반드시 그룹 연산자 (...)로 감싸야 한다.
- 모든 식별자는 자신이 선언된 위치에 의해 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위가 결정된다 이를 스코프라 한다