console.log
[모던 자바스크립트 Deep Dive] 13 - 15 장 Self Quiz 본문
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는 같은 스코프 내에서 중복 선언 불가능
6. 4
2. 다음 결과는 ?
var x = 1;
function foo() {
var x = 10;
bar();
}
function bar() {
console.log(x);
}
foo(); // 1
bar(); // 2
정답
1. 1
2. 1
🔸 자바스크립트는 렉시컬 스코프를 따른다
렉시컬 스코프는 함수 정의 위치에 따라 상위 스코프를 결정한다.
이 경우에는 bar함수가 전역에서 정의된 함수이므로 전역 스코프에 따라 x = 1을 출력한다.
3. 다음 결과는 ?
var x = 1;
function foo() {
console.log(x); // 1
var x = 2;
}
foo();
console.log(x); // 2
정답
1. undefined ——> 지역 변수가 우선적으로 선택되는데 이때 변수 호이스팅으로 undefined 초기화 된 상태
2. 1
4. 다음 결과는 ?
var Count = ( function() {
var num = 0;
return {
increase() {
return ++num;
},
decrease() {
return --num;
}
};
})();
console.log(Count.num); // 1
console.log(Count.increase()); // 2
console.log(Count.decrease()); // 3
정답
1. undefined ——> 즉시 실행 함수의 지역 변수이므로 외부에서 사용 불가
2. 1
3. 0
🔸 모듈 패턴을 이용한 정보 은닉
5. 다음 중 옳지 않은 것을 모두 고르시오.
① let과 const는 재선언이 불가능하다
② var는 사용하지 않는 것이 좋다
③ let은 한정적으로 필요할 때만 사용하는 것이 좋다
④ let과 const는 변수 호이스팅이 발생하지 않는다
⑤ const에 할당한 모든 값은 변경 불가능하다
정답
④ : 변수 호이스팅이 발생되지만 참조가 불가능해서 호이스팅이 발생되지 않는 것처럼 보임
⑤ : 객체의 경우 프로퍼티를 변경해 변경 가능하다. (재할당이 불가능한 것… 불변을 의미하지는 않음)
'개발공부 > JavaScript' 카테고리의 다른 글
[모던 자바스크립트 Deep Dive] 16 - 18 장 Self Quiz (0) | 2023.08.23 |
---|---|
[모던 자바스크립트 Deep Dive] 16 - 18 장 (0) | 2023.08.22 |
[모던 자바스크립트 Deep Dive] 13 - 15 장 (0) | 2023.08.20 |
[모던 자바스크립트 Deep Dive] 10 - 12 장 Self Quiz (0) | 2023.08.19 |
[모던 자바스크립트 Deep Dive] 10 - 12 장 (0) | 2023.08.18 |