2017-11-29 8 views
-2

나는 완전히 녹색이다. Eloquent JavaScript을 읽기 시작했으며 2 장은 몇 가지 연습 문제를 다룹니다.나는 FizzBuzz를 "풀었"만, 왜 작동하는지 이해할 수 없다.

분명히 "FizzBuzz"문제는 소개 할 필요가 없습니다. 나는 다른 접근법을 시도하면서 정직한 시도를하는 한 시간의 더 좋은 부분을 보냈다.

마지막으로 이 아니기 때문에 해결책이 도착했습니다.

var x = 1 
while (x <= 20){ 
    if (x % 5 == 0 && x % 5 == 0){ 
    console.log("FizzBuzz"); 
    } 
    else if (x % 5 == 0){ 
    console.log("Buzz"); 
    } 
    else if (x % 3 == 0){ 
    console.log("Fizz"); 
    } 
    else 
    console.log(x); 
    x++; 
} 

을 그래서, 내 현재의 이해 : 나는 그것을보고 그러나, 나는 그것이 어떻게 작동하는지 이해가 안 나는이 스크립트는 처음 "소다"에 대한 3 카운트 기대하고 박히 무한 루프.

분명히 나는 ​​이것을 잘못 이해하고 있습니다. 어떻게 스크립트가 이것을 지나서 '4'로 이동합니까?

읽어 주셔서 감사합니다.

+3

'x ++'는'if-else' 문 밖에 있습니다. 그것은 항상 실행됩니다. 자바 스크립트에서는 들여 쓰기가 중요하지 않습니다. – Pointy

+2

또한 코드가 잘못되었습니다. 첫 번째'if' 조건은 같은 것을 두 번 테스트합니다. – Pointy

+0

그 해결책은 효과가 없습니다. 3 행의 '5'중 하나는 '3'이어야합니다. – OrangeDog

답변

3

올바르게 포맷하면 분명 해집니다. 이다

var x = 1 
while (x <= 20){ 
    if (x % 5 == 0 && x % 3 == 0){ 
    console.log("FizzBuzz"); 
    } 
    else if (x % 5 == 0){ 
    console.log("Buzz"); 
    } 
    else if (x % 3 == 0){ 
    console.log("Fizz"); 
    } 
    else 
    console.log(x); 
    x++; 
} 

, x++는 독립적으로 조건문으로 실행됩니다 그것은 단지 하나 개의 문장을 고려하도록 else 절에는 중괄호,이 없기 때문에 (즉이다 console.log)

나는 또한 당신이 가지고 오류를 수정

첫 번째 조건 (x%3을 확인하는 대신 x%5을 두 번 확인했습니다).

0

else에는 대괄호가 없으므로 하나의 명령 만 실행합니다. 따라서 모든 반복에서 x++이 실행됩니다.

그런데 if (x % 5 == 0 && x % 5 == 0)if (x % 3 == 0 && x % 5 == 0)으로 변경해야합니다.