https://inflearn-quiz.vercel.app/javascript/2-const-let
실전 자바스크립트 퀴즈
문제 1 다음 코드의 실행 결과는? 참조 에러가 발생한다0이 출력된다undefined가 출력된다 문제 2 다음 중 const, let, var에 대한 설명으로 틀린 것은? const, let은 블록 스코프이다const, let은 호이스팅이
inflearn-quiz.vercel.app
1. 다음 코드의 실행 결과는?
if (true) {
const i = 0;
}
console.log(i);
let과 const는 블록 스코프를 가지고 있기 때문에 블록 밖에서 참조 에러가 발생한다.
var로 선언 하였다면 참조 에러가 발생하지 않고 0이 출력된다.
☆블록 스코프(Block Scope): 변수나 상수 등의 식별자(identifier)가 선언된 코드 블록({}) 내부에서만 유효한 스코프.
2. 다음 중 const, let, var에 대한 설명으로 틀린 것은?
const, let은 호이스팅 되지 않는다.
const와 let도 호이스팅이 된다.
다만 var은 선언과 동시에 초기화(undefined로)가 이루어지고,
const와 let은 선언만되고 초기화가 이루어지지 않아 TDZ에 들어간다.
3. 다음 코드에 대한 설명으로 틀린 것은?
let foo = 'bar1';
console.log(foo);
if (true) {
let foo = 'bar2';
console.log(foo);
}
console.log(foo);
5번째 줄에서 같은 이름의 변수를 재정의 하기 때문에 에러가 발생한다.
-> let은 재정의할 수 있기 때문에 에러가 발생하지 않는다.
4. 다음 코드의 실행 결과는?
console.log(foo);
const foo = 1;
const로 정의된 foo는 선언과 동시에 초기화가 이루어 진다. 초기화 이전에 사용하려고 하면
ReferenceError: Cannot access 'foo' before initialization가 발생한다.
5. 다음 코드의 실행 결과는?
const foo = 1;
{
console.log(foo);
const foo = 2;
}
블록 스코프의 foo가 정의되기 이전에 console.log로 출력을 하려고 하기 때문에
ReferenceError: Cannot access 'foo' before initialization 에러가 발생한다.
6. 다음 코드의 실행 결과는?
const bar = { prop1: 'a' };
bar.prop1 = 'b';
call by reference이기 때문에 저장된 주소는 동일하다 따라서 재할당 되는 것이 하니며 bar.prop1은 에러 없이 속성 b가 할당된다.
'Programming language > JavaScript' 카테고리의 다른 글
자바스크립트 퀴즈 - number 타입 (0) | 2023.03.20 |
---|---|
자바스크립트 퀴즈 - 8가지 기본 타입 (0) | 2023.03.19 |
자바스크립트 퀴즈 - var (0) | 2023.03.16 |
[Node.js] open-graph-scraper모듈 (0) | 2023.02.06 |
스코프 (Javascript) (0) | 2022.12.02 |