자바스크립트 return 관련 문의 드립니다.
조회수 532회
<script>
function showMovie(age) {
//checkAge의 반환값이 false라면 종료
if (!checkAge(age)) {
return alert('오류');
//checkAge의 반환값이 true
} else {
alert('영화 상영');
}
}
function checkAge(age) {
if (age > 18) {
return true;
} else {
//동의 안할시 false 반환
return confirm('보호자의 동의를 받으셨나요?');
}
}
function init() {
let age = prompt('나이를 알려주세요');
showMovie();
}
init();
</script>
나이를 18세 초과인 값을 입력하면 바로 영화상영 메세지가 나와야하는데요. 보호자동의 confirm 메세지로 이동해지는 이유가 뭔지 궁금합니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
의사 코드로 간단히 보면요:
call showMove() call checkAge(age) // 여기부터 age는 undefined if age > 18 // age는 undefined, undefined는 NaN이므로 무조건 false call confirm('보호자의 동의를 받으셨나요?')
이렇게 됩니다.
왜냐면
age
가 전역 변수가 아니고init()
의 지역 변수라 다른 함수에서 참조할 수 없기 때문입니다.
댓글 입력