본문 바로가기

스터디

(37)
#16. 프로퍼티 어트리뷰트 1. 내부 슬롯과 내부 메서드내부 슬롯과 내부 메서드는 자바스크립트 엔진의 내부 로직이므로 원칙적으로 자바스크립트는 내부 슬롯과 내부 메서드에 직접 적으로 접근하거나 호출할 수 있는 방법을 제공하지 않는다.(일부 내부 슬롯과 내부 메서드에 한하여 간 접적으로 접근할 수 있는 수단을 제공하기는 한다)2. 프로퍼티 어트리뷰트와 프로퍼티 디스크립터 객체자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으로 자동 정의한다.프로퍼티 어트리뷰트자바스크립트 엔진이 프로퍼티를 생성할 때 자동으로 정의하는 내부 상태 값이들은 프로퍼티의 상태를 나타내며 값(value), 값의 갱신 가능 여부(writable), 열거 가능 여부(enumerable), 재정의 가능 여부(confi..
#15. let, const 키워드와 블록 레벨 스코프 1. var 키워드로 선언한 변수의 문제점변수 중복 선언 허용var 키워드로 선언한 변수는 중복 선언이 가능하다.동일한 이름의 변수가 이미 선언되어 있는 것을 모르고 변수를 중복 선언하면서 값까지 할당했다면 의도치 않게 먼저 선언된 변수 값이 변경되는 부작용이 발생하다.함수 레벨 스코프var 키워드로 선언한 변수는 함수의 코드 블록만을 지역 스코프로 인정한다.함수 외부에서 var 키워드로 선언한 변수는 모두 전역 변수가 된다.변수 호이스팅변수 호이스팅에 의해 var 키워드로 선언한 변수는 변수 선언문이 스코프의 선두로 끌어 올려진다.변수 선언문 이전에 변수를 참조할 수 있지만, 할당문 이전에 변수를 참조하면 언제나 undefined를 반환한다.변수 선언문 이전에 변수를 참조하는 것은 가독성을 떨어뜨리고 ..
#14. 전역 변수의 문제점 1. 변수의 생명 주기지역 변수의 생명 주기지역 변수는 함수가 호출되면 생성되고 함수가 종료되면 소멸한다.함수 내부에서 선언된 변수는 함수가 호출되기 이전까지는 생성되지 않는다.변수 선언은 실행 시점이 아니라 런타임 이전에 먼저 실행되며, 함수 호출 시에 변수 선언문이 가장 먼저 실행된다.전역 변수의 생명 주기전역 변수는 전역 객체의 프로퍼티로 존재하며, 전역 객체는 프로그램이 실행되기 이전에 먼저 생성된다.브라우저 환경에서는 전역 객체가 window이며, 브라우저를 닫을 때까지 유효하다. 따라서 전역 변수의 생명 주기는 전역 객체의 생명 주기와 일치한다.2. 전역 변수의 문제점암묵적 결합모든 코드가 전역 변수를 참조하고 변경할 수 있는 암묵적 결합을 허용한다.변수의 유효 범위가 크면 클수록 코드의 가독..
#13. 스코프 1. 스코프란?스코프(scope) : 코드에서 변수와 함수의 유효 범위를 나타낸다.변수나 함수를 어디서 사용할 수 있는지를 결정한다.스코프의 개념을 이해하면 코드에서 식별자를 어떻게 해석하고 사용할지를 알 수 있다.우선, 스코프는 코드의 구조에 따라 변수의 유효 범위를 결정한다. 예를 들어, 함수 내부에서 선언된 변수는 함수 내부에서만 사용할 수 있고, 함수 외부에서는 사용할 수 없다. 이러한 스코프의 개념은 변수와 함수가 어디에서 사용될 수 있는지를 명확히 정의한다. 스코프와 변수 선언변수는 코드 블록이나 함수 내에서 선언될 수 있다. 또한, 변수는 중첩된 코드 블록이나 함수 내부에서도 선언될 수 있다. 이때 변수의 스코프는 변수가 선언된 위치에 따라 결정된다. 예를 들어, 함수 내에서 선언된 변수는 ..
#12. 함수 1. 함수란? 전달받는 변수 : 매개변수 입력 : 인수 출력 : 반환값 2. 함수를 사용하는 이유 코드의 재사용 측면에서 매우 유용 유지보수의 편의성 증가 실수를 줄여 코드의 신뢰성을 높이는 효과 3. 함수 리터럴 함수 리터럴의 구성요소 리터럴 : 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기 방식, 즉 값을 생성하기 위한 표기법 함수는 객체지만 일반 객체와는 다르게 "호출"할 수 있다. 4. 함수 정의 함수 정의 : 함수를 호출하기 이전에 인수를 전달받을 매개변수와 실행할 문들, 반환할 값을 지정하는 것을 의미. 정의된 함수는 자바스크립트 엔진에 의해 평가되어 함수 객체가 됨 함수를 정의하는 방법 5. 함수 호출 함수는 함수를 가리키는 식별자와 한 쌍의 소괄호인 함수 호출 ..
#11. 원시값과 객체의 비교 원시값 : 변경 불가능 / 변수에 원시값 할당 시 실제 값 저장 / 원시값을 갖는 변수를 다른 변수에 재할당 시 실제값 저장 객체 : 변경 가능한 값 / 변수에 객체 할당 시 참조 값 저장 / 객체를 갖는 변수를 다른 변수에 재할당 시 참조값 저장 1. 원시값 변경 불가능 한 값 원시값은 변경 불가능한 값 변수 vs 값 변수 : 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 메모리 공간을 식별하기 위해 붙인 이름 값 : 변수에 저장된 데이터로, 표현식이 평가되어 생성된 결과 => 변경 불가능하다는 것은 변수가 아니라 값에 대한 진술 변수 vs 상수 변수 : 언제든지 재할당을 통해 변수 값을 변경할 수 있음 재할당 시 변수가 참조하던 메모리 공간의 주소가 재할당한 원시 값의 메모리 주소값으로 바..
#10. 객체 리터럴 1. 객체란?자바스크립트를 구성하는 거의 "모든 것" 이 객체다. 원시 값을 제외한 나머지 값 (함수, 배열, 정규 표현식 등)은 모두 객체다. 객체 타입은 다양한 타입의 값(원시 값 또는 다른 객체)을 하나의 단위로 구성한 복합적인 자료구조다. 원시 값은 변경 불가능한 값이지만 객체 타입의 값, 즉 객체는 변경 가능한 값이다. 객체는 0개 이상의 프로퍼티와 메서드로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다. 자바스크립트에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 있다. 함수도 프로퍼티 값으로 사용할 수 있다. ( 일반 함수와 구분하기 위해 메서드라 부른다 ) · 프로퍼티: 객체의 상태를 나타내는 값 (data) · 메서드 : 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동직(be..
#9. 타입 변환과 단축 평가 1. 타입 변환이란? 자바스크립트의 모든 값은 타입이 있고, 값의 타입은 개발자의 의도에 따라 다른 타입으로 변환할 수 있다. 명시적 타입 변화 / 타입 캐스팅 : 개발자가 의도적으로 값의 타입을 변환하는 것 var x = 10; var str = x.toString(); console.log(typeof str,str); // string 10 암묵적 타입 변환 / 타입 강제 변환 : 개발자의 의도와는 상관없이 표현식을 평가하는 도중에 자바스크립트 엔진에 의해 암묵적으로 타입이 자동 변환 되는 것 var x = 10; var str = x + “"; console.log(typeof str, str); // string 10 암묵적 타입 변환은 기존 변수 값을 재할당하여 변경하는 것이 아님! 자바스크립..