Problem 1

솜주먹·2022년 7월 21일
0
  • 콘솔에 찍힐 b 값을 예상해보고, 어디에서 선언된 “b”가 몇번째 라인에서
    호출한 console.log에 찍혔는지, 왜 그런지 설명해보세요.
    주석을 풀어보고 오류가 난다면 왜 오류가 나는 지 설명하고 오류를 수정해보세요.
let b = 1;

function hi () {

const a = 1;

let b = 100;

b++;

console.log(a,b);

}

//console.log(a);

console.log(b);				// 1

hi();						// 1 101 => 실질적으로 hi안의 console.log(a,b) 실행

console.log(b);				// 1

해설
1. b의 위치 : hi안에 있는 console.log(a,b)의 b는 hi라는 함수안에
b라는 변수(100)가 있기에 블록스코프를 따르는 let의 특성상
1, 101(b++때문에)출력나머지는 전역변수로 존재하는 b(1)라는 변수의 1출력

  1. a의 주석 해제 시 : a라는 변수는 hi라는 함수 안에 선언되어있는 변수이기에 함수의 밖에있는 console.log(a)는 a를 볼수 없기에 ReferenceError(참조 에러)가 발생

굳이 a를 보고 싶다면?

a를 함수 밖의 전역 변수로 설정하던가
retrun값으로 줘서 함수자체 출력을 하던가
a의 선언은 밖에서하고 값을 함수 안에서 주던가(이경우 함수 호출이 뒤에 있을시 undefined)
등 의 개발의도에 따라 많은 방법이 있을 듯

0개의 댓글