2014-04-01 1 views
0

누군가 다음 코드가 foo을 다시 정의하는 대신 무한 루프를 반환하는 이유를 설명해 줄 수 있습니까? 물론왜이 자바 스크립트 루프가 무한대로 돌아 옵니까?

var foo = 2; 

while (foo = 2) { 
    foo = 3; 
} 

console.log('foo is ' + foo); 

은, 루프를 통해 처음 foo 실제로 2 동일하기 때문에 실행하는 것입니다. 그러나, 나는 계속 달리기를 왜 이해하지 못한다. 처음으로 foo을 통해 3을 설정 한 후에는 매개 변수가 false를 반환하고 console.log('foo is ' + foo);foo is 3을 인쇄해야합니다.

분명히 여기에 뭔가가 빠졌습니다.

+0

도 뭘해야되는 경우 루프 개방? – redFIVE

+1

'while (foo == 2)' –

+0

환상적입니다. 모두에게 감사드립니다. – dsparry

답변

2

현재 상태에서 그것을 비교하는 대신 foo에 값이 할당된다 (또는 2 당신은 더 엄격한 검사를 원하는 경우) :

while (foo = 2)

변경 그것에 :

while (foo == 2)

2
while (foo == 2) { 
    foo = 3; 
} 
당신은 등호 누락

while (foo === 2) { 
    foo = 3; 
} 
+0

하지만 구문 오류가 없어야합니까? –

+1

구문 상 정확하게 일치하지 않습니다. 이것은 논리적 인 오류입니다. – Aashray

+0

JavaScript에는 "truthy"및 "falsey"의 개념이 있습니다. 즉, 부울 값이 아닌 값에 부울 논리를 사용할 수 있습니다. '2'값은 truey이므로 while (2)는 while (true)와 같습니다. –

0
당신이 놓칠 수

"(foo는 == 2) 동안"

다시 무한대가 나를 알려 인쇄되면이 ..

+0

일이 일어났습니다. – BAP