목록분류 전체보기 (126)
console.log

1. 접근자 프로퍼티의 어트리뷰트가 아닌 것은 ? ① [[Get]] ② [[Set]] ③ [[Writable]] ④ [[Enumerable]] 정답 ③ 은 데이터 프로퍼티에 있는 어트리뷰트이다. 접근자 프로퍼티 어트리뷰트에는 [[Configurable]] 도 있다. 2. 다음 중 옳지 않은 것을 모두 고르시오. ① 객체 확장 금지 메서드는 프로퍼티 삭제를 금지한다. ② 객체 밀봉 메서드는 프로퍼티 값 쓰기를 금지한다. ③ 객체 동결 메서드는 프로퍼티 값 쓰기를 금지한다. ④ 객체 동결 메서드는 프로퍼티 어트리뷰트 재정의를 금지한다. 정답 ① 객체 확장 금지 메서드는 프로퍼티 추가만 금지한다. ② 객체 밀봉 메서드는 프로퍼티 값 읽기, 쓰기만 가능하다. 객체 동결 메서드는 프로퍼티는 프로퍼티 값 읽기만 가..

16. 프로퍼티 어트리뷰트 내부 슬롯과 내부 메서드 ECMAScript에서 사용하는 이중 대괄호 [[…]] 개발자가 직접 접근할 수 없는 내부 로직 일부 간접적으로 접근 가능한 수단 제공 ——> [[Prototype]] : _ proto _ 프로퍼티 어트리뷰트와 디스크립터 객체 프로퍼티 어트리뷰트 프로퍼티의 상태를 나타내는 값 프로퍼티 생성 시 자동 정의 프로퍼티의 값, 값의 갱신 가능 여부, 열거 가능 여부, 재정의 가능 여부 [[Value]], [[Writable]], [[Enumerable]], [[Configurable]] —→ Object.getOwnPropertyDescriptor로 간접 접근 가능 Object.getOwnPropertyDescriptor 첫 번째 매개변수 : 객체의 참조 두 ..

1. 다음 결과는 ? var var1 = 1; if(true) { var var2 = 2; if(true) { var var3 = 3; } } console.log(var1); // 1 console.log(var2); // 2 console.log(var3); // 3 var var4 = 4; function test() { var var4 = 5; let let5 = 5; console.log(var4); // 4 let let5 = 6; console.log(let5); // 5 } test(); console.log(var4); // 6 정답 1. 1 2. 2 3. 3 4. 5 —→ 우선적으로 inner function에서 찾는다. 5. SyntaxError —→ let, const는 같은 스코프..

13. 스코프 스코프 식별자가 유효한 범위 종류 전역 스코프 지역 스코프 함수 레벨 스코프 동적 스코프 : 함수를 호출한 위치에 따라 함수의 상위 스코프 결정 렉시컬 스코프(정적 스코프) : 함수를 정의한 위치에 따라 상위 스코프 결정 var : function-level-scope 중복 선언 가능 let, const : block-level-scope 중복 선언 불가능 매개변수 : inner-function-level-scope 전역 지역 코드의 가장 바깥 영역 함수 몸체 내부 어디서든 참조 가능 본인 스코프, 하위 스코프 참조 가능 우선순위 ↓ 우선순위 ↑ 14. 전역 변수의 문제점 변수 생명 주기 선언된 위치에서 생성 → 소멸 지역 변수 생명 주기 = 함수의 생명 주기 전역 변수 생명 주기 = 전역..

다음 중 프로퍼티 접근방법으로 옳지 않은 것을 모두 고르시오. var person = { myname: "Lee", "last-name": "Jisoo", "123name": "123name", age: 20, }; person.’last-name’ person[myname] person.last-name person[’123name’] 정답 person.’last-name’ - `SyntaxError` person[’last-name’] person[myname] - `ReferenceError` person.myname person.last-name - `NaN` person[’last-name’] ( `-` 를 연산자로 취급 ) 다음 결과는 ? var score = 100; var copy = sc..

10. 객체 리터럴 객체 원시 값을 제외한 모든 값 0개 이상의 프로퍼티로 이루어짐 프로퍼티와 메서드로 구성됨 프로퍼티 : 객체의 상태를 나타내는 값 (key : value) 키 - 모든 문자열 or 심벌 값 (식별자 네이밍 규칙 준수하지 않을 경우 따옴표로 묶는다) value - 모든 값 키를 중복 선언하면 나중에 선언한게 덮어씀 접근 : 마침표person.name or 대괄호person[ ’name’ ] ES6 부터는 변수 사용할 경우 키 생략 가능 메서드 : value자리에 들어가는 함수 객체에 묶여있는 함수 객체 생성 방법 객체 리터럴 중괄호 내에 0개 이상의 프로퍼티 정의 object 생성자 함수 생성자 함수 Object.create 메서드 클래스(ES6) 11. 원시 값과 객체의 비교 원시 값..

더 깊은 이해를 위해 스스로 퀴즈 내보기 ⭕❌ 1. 변수 선언 키워드 3가지와 각각의 스코프를 작성하시오. 정답 var : function-level-scope let : block-level-scope const : block-level-scope 2. JS 에서 사용할 수 없는 식별자를 모두 고르시오. ① 1234age ② test-list ③ _value ④ $score 정답 ①, ② 숫자로 시작 불가능 특수기호는 _ 와 $만 사용가능 3. 원시 타입 데이터 종류를 모두 적으시오. 정답 숫자, 문자열, boolean, null, undefined, Symbol 6가지 이외에는 모두 객체 타입 데이터이며 JS 에서는 객체 타입 데이터가 많이 쓰임 4. typeof null의 반환 값은 ? 정답 obj..

4. 변수 변수 선언 키워드 var장점 : 선언과 초기화 동시에 진행 ——> 이전에 사용했던 쓰레기 값 나올 일 없음메모리 누수 가능성 있지만 가비지 콜렉터로 메모리를 해제하며 누수 방지 단점 : block-level-scope 지원하지 않음 (function-level-scope) ——> 의도치 않게 전역변수 선언됨 유일한 키워드였지만 단점 때문에 let, const 도입 constblock-level-scope 재할당 금지, 상수 표현 가능 let block-level-scope ⚠️ Reference Error 선언되지 않은 식별자를 참조하려 할 때 발생하는 에러 🔑 Hoisting JS 엔진은 소스코드를 실행하기 앞서 소스코드 평가 과정을 거치면서 **모든 선언문을 먼저 실행**한다. 따라서 변수..