-
실습 과제
콘솔에 찍힐 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); hi(); console.log(b);
문제 풀이
let b = 1; const a = 1; // a변수 값을 전역변수로 빼준다. function hi () { let b = 100; b++; console.log(a,b); } console.log(a); console.log(b); hi(); console.log(b);
a 변수가 함수 hi()의 지역변수였기 때문에 함수 밖에서 변수를 호출하여 console.log()를 찍어줘도 정의가 되지않았다는 오류를 뿜으며 실행되지 않는다.
가장 간단한 해결책은 변수 a 값을 전역변수로 바꿔 주면 정상적으로 출력된다.또한 변수 b의 값은 함수를 호출하기 전에 값은 1이다. 함수를 실행하기 전까지 변수 값은 변하지 않는다.
함수를 호출한 후에는 b의 값에 100을 줬고 증감연산자를 통해 +1이 되어 101로 바뀌게 되었다. 그렇기 떄문에 함수를 호출한 후에
변수 b의 값은 101이 된다.
'항해99' 카테고리의 다른 글
취업특강 (0) 2022.10.09 220917 3주 MVP 중간발표 (0) 2022.09.21