메뉴 건너뛰기

2020.11.23 16:38

6장 오픈챌린지 질문

조회 수 276 댓글 1

 

 

prompt로부터 받은 값은 문자열이잖아요..?

그런데 왜 get을 parseInt로 정수화해주지 않았는데도 정상실행이 되는건지 잘 모르겠어요.

 

-------------------------------------------------------------------------

<!DOCTYPE html>

<html>

    <head></head>

    <body>

        <h2>별 문자 출력하기</h2>

        <hr>

        <script>

            get=prompt("정수를 입력하세요","");

            if(isNaN(get)){

                document.write("입력 오류 입니다.");

            }

            else{

                for(var i=0; i<get; i++){

                    for(var j=0; j<=i; j++){

                        document.write("*");

                    }

                    document.write("<br>");

                }                

            }

        </script>

    </body>

</html>

?
  • ?
    관리자 2020.11.24 09:00
    parseInt에 대해 알 고 있는 분이군요. 좋은 질문입니다.
    1. 그런데 만일 다음 코드 후
    get=prompt("정수를 입력하세요","");

    사용자가 "hello"라고 입력하였다고 합시다.
    parseInt(get) 하면 여기서 오류가 나서 프로그램 실행이 종료하게 되지요.

    그래서 오히려 다음 조건문을 사용합니다.
    if(isNaN(get)){

    즉 get에 들어 있는 내용이 숫자인지 숫자가 아닌 문자열인지를 판단합니다.
    만일 숫자가 아닌 문자열인 경우 다음의 오류 메시지를 출력하고
    document.write("입력 오류 입니다.");

    for 반복문이 실행되지 않게 합니다.

    2. 또 이런 의문을 품을 수 있겠군요.
    그러면 다음 for 문안에서 get은 문자열인데 정수 값을 가진 변수 i와 get이 어떻게 비교될 수 있나요?
    for(var i=0; i<get; i++){

    이것도 좋은 의문입니다.
    이 코드가 실행되는 시점에서 get은 분명히 숫자의 문자열 입니다("5"와 같이).
    자바스크립트는 타입의 경계를 엄격하게 체킹하지 않고(loosely typed) 숫자를 가진 문자열의 경우 숫자와 같이 다룹니다.
    정말 정확히 코드를 작성하려면 다음과 같이 하면 됩니다.
    k = parseInt(get)
    for(var i=0; i<k; i++){

    for(var j=0; j<=i; j++){

    document.write("*");

    }

    document.write("<br>");

    }

QnA

공부하면서 궁금했던 것을 질문해보세요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 읽어주세요! 연습문제 및 실습문제 정답 공개에 관한 공지입니다. file 관리자 2017.06.20 18330
243 7장 실습문제10번 자바 2019.06.13 747
242 5장 연습문제 홀수 번 질문 1 채XX 2019.06.17 1998
241 자바스크립트로 배경이미지슬라이드 만들어볼려고 열심히 노력하는데 1 hansung 2019.06.24 223
240 423쪽, 예제9-20 1 사랑나눔 2019.06.27 127
239 배경슬라이드가 뭔지 추가설명하겠습니다 2 hansung 2019.06.27 92
238 책 151p 3장 오픈챌린지 문제질문입니다. 3 이상민 2019.07.19 239
237 361page 예제 8 -2 질문입니다. 1 ㅁㄴㅇㄻㄴㅇㄹ 2019.08.14 67
236 377page 8장 오픈챌린지 질문입니다.(다시 질문 올립니다.) 2 멍청이 2019.08.15 359
235 384page 8장 실습문제5번 질문입니다. 6 1234 2019.08.16 441
234 385p 8장 실습문제 07번 질문입니다. 1 12345 2019.08.16 617
233 교재403page 예제9-8 코드 질문입니다. 1 asdf 2019.08.19 101
232 교재 413page 질문입니다. 1 ㅁㅇㄻㄴㅇㄹ 2019.08.20 98
231 교재425page 9장 오픈챌린지 질문입니다. [재수정해서 올립니다.] 3 ㅁㄴㅇㄻㄴㅇㄹ 2019.08.20 770
230 425페이지 오픈챌린지09번 질문입니다. 1 멍청이 2019.08.22 179
229 432페이지 9장 실습문제9번 질문입니다. 1 asdf 2019.08.22 266
228 465page 오픈챌린지10장 질문입니다. 2 asdf 2019.08.23 413
227 432PAGE 9장 실습문제 9번 재질문올립니다. 2 asdfSDF 2019.08.23 154
226 10장 window.open 질문입니다. 1 멍청이 2019.08.23 379
225 교재 468page 실습문제 2-2번 질문입니다. 3 세린 2019.08.23 255
224 게시판QnA질문입니다. 4 file asdf 2019.08.30 182
목록
Board Pagination Prev 1 ... 4 5 6 7 8 9 10 11 12 13 ... 21 Next
/ 21
위로