인프런 커뮤니티 질문&답변

Go9님의 프로필 이미지
Go9

작성한 질문수

쉽고 자연스럽게 배워보는 Javascript 입문 - 코드스쿼드 마스터즈 코스 레벨1

- 연습문제 3

안녕하세요, 코드리뷰 부탁드리려고 합니다.

해결된 질문

작성

·

186

1

좋은 강의 해주셔서 감사드립니다.

계속 코드를 짜보았지만, 열어보면 무한 로딩만 걸리다가 디버그툴에 의해 중지되기만 하고, 결국 돌아가지를 않아서요 :(
몇 번을 살펴보아도 아직 부족한 탓에 문제점을 찾질 못했습니다.

코드 리뷰 한번 부탁드립니다. 

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
</head>
<body>
    <script>
        var numbers = {};
        numbers.Prime = [];
        numbers.All = [];

        numbers.isprime = function(number) {
            for(i = 2; i < number; i++) {
                if(number % i === 0) {
                    return false;
                }
            }   
            return true;
        };
        
        numbers.AllNumber = function(maxnum) {
            for(i = 2; i <= maxnum; i++) {
                this.All.push(i);
            }
        };

        numbers.splitprime = function() {
            for(i = 0; i <= this.All.length; i++) {
                var a = this.All[i];
                if (this.isprime(a)) {
                    this.Prime.push(a);        
                }
            }
        };
        numbers.printprime = function() {
            document.write("전체 소수의 개수: " + this.Prime.length + "<br>" + "<br>");
            for(var i = 0; i < this.Prime.length; i++) {
                document.write((i+1) + "번째 소수: " + this.Prime[i] + "<br>");
            }
        };
        
        numbers.AllNumber(10);
        numbers.splitprime();
        numbers.printprime();

    </script>    
</body>
</html>

답변 3

2

안녕하세요. 지나가던 수강생인데 혹시나 도움이 될까 싶어 답변 남깁니다.

무한 로딩만 걸리다가 디버그툴에 의해 중지되는 문제 -> for문에 i = 0 -> var i =0 으로 바꿔주시면 해결됩니다.

추가로 splitprime 함수에서 배열은 1번이아닌 0번부터 시작하기때문에 i <= this.All.length i < this.All.length 로 바꿔주셔야합니다.

1

호눅스님의 프로필 이미지
호눅스
지식공유자

참 그리고 이렇게 디버깅이 어려울 때는 console.log(변수명)을 이용해서 중간중간에 값을 찍어보는 방법과 브레이크포인트라는 것을 활용하는 방법도 있으니 검색해 보세요. 

1

호눅스님의 프로필 이미지
호눅스
지식공유자

위에 Red님이 답변 주셨네요. 

이 문제 때문에 요즘은 var 대신에 let이나 const를 사용합니다. 

전체 소스를 약간 고쳤습니다. 아래 참고하세요.

https://codepen.io/honux77/pen/BgdOeJ?editors=1000

https://gist.github.com/honux77/7032ad6c9a2c086141cc5d207c4be452

Go9님의 프로필 이미지
Go9

작성한 질문수

질문하기