2013-12-17 2 views
-4

나는 while 루프를 만들고 있는데 어떤 이유로 그것이 무한히 돌아갑니다. 나는 var "days"의 길이에 멈추지 않는 것을 이해하고 싶다.while 루프를 영원히 실행하는 중

var day1 = 1 
var days = 365 

while (day1 <= days) { 
    day1++; 
if (day1 = 358) { 
    console.log('today is christmas'); 
} else { 
    console.log("today is day " + day1); 
} 
} 
+3

다음 질문을위한 팁 http://jshint.com – elclanrs

+0

'if (day1 = 358)'왜 당신이 day1에 358을 할당합니까? –

+0

나는 콘솔을 들여다 보았을 때 매일 당신이 크리스마스라는 것을 알았을 것입니다. –

답변

6

당신은 당신은 값을 비교하지 않는

if (day1 = 358) { 

을 말할 때,하지만 당신은 모든 반복에 day1358를 할당한다. 따라서 값은 변하지 않습니다. 그게 왜 무한 루프에 빠지게되는지. 대신 비교 (===)와 변수 day1의 값의 할당 (=)를하고 있기 때문에이 문제를 해결하려면이

if (day1 === 358) { 
9

이유 같은

사용 비교 연산자는 영원히 (358)로 남아있다. 또한 당신은 할당 때문에 항상 "오늘은 크리스마스입니다"라는 기록에 주목했을 것입니다. 결과는 항상 진실이되도록하는 0이 아닌 값입니다. 당신은 또한뿐만 아니라 (귀하의 경우 필요 없음) 타입 강제 변환을 수행하는 ==를 사용할 수에

변경

if (day1 = 358) { 

if (day1 === 358) { 

에 그냥 비교 기간은 물론 추가 할 수 있지만, ===은 엄격한 동등 비교이며 대부분의 경우에 권장됩니다.

+0

멋진 고마워, 나는 그것이 아주 간단하다는 것을 알았다 :) n 메리 크리스마스! – jstone

+0

@jstone 환영합니다. 메리 크리스마스도 환영합니다. :) – PSL

+0

@PSL -'=='와'==='의 차이점을 언급해야합니다. –

관련 문제