2016-06-06 2 views
0

다음 코드는 무한 루프에 빠지며 웹 페이지에서 충돌이 발생합니다. 문제가 무엇인지 알아야합니까? 이 때문에 결코 당신은 그것을 변경해야> 2 인 결코 을 끝이없는, 모든 실행에 0 + 1을지지 않습니다으로자바 스크립트 코드가 무한 루프로 바뀜

for (var i = 0; i < 2; i+1) { 
      for (var j = i; j < 8; j + 2) { 
       console.log(arr[j].Qu); 
      } 
      console.log(arr[i]); 
     } 
+0

와 당신이 여기 달성하려고합니까, 그것은 불분명하다, 왜'j'가'에게 i' 같다? –

+2

@ CeylanMumunKocabaş 내 비즈니스의 일부 비즈니스 로직에 대해 서로 중첩 된 루프를 만들고 싶습니다. –

답변

4

나는 + 1은 항상 값 1을 가지고 난, 난의 값을 업데이트, 그에하지 않습니다 내가 + + 당신은 값 urself에 할당해야하는 이유, 또한이

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

for (var j = i; j < 8; j += 2) { 

내가 + 1 할당 작업이 아니다으로, @Xufox가 지적 하듯, UDPATE 당신의 J 루프처럼, 그건 . i++j+=2

i = i+1; 
j= j+2; 

로 변환하고, 우측 연산의 결과는 자기 할당 다시 변수에 할당되지 않은 변수

+4

'j'와 동일하지만'j + = 2'이어야합니다. – Xufox

+0

죄송합니다.하지만 i + 1이 i 값을 업데이트하지 않는 이유는 무엇입니까?! –

+1

@moaatazaamer 당신은 대입 연산자'i = i + 1'을 사용하여 'i'에 값을 다시 할당하거나, 바로 가기 인 증분 연산자'i ++'를 사용합니다. – Tushar

1

값이다.

for (var i = 0; i < 2; i+=1) { // i++ 
      for (var j = i; j < 8; j+=2) { 
       console.log(arr[j].Qu); 
      } 
      console.log(arr[i]); 
     } 
1

i+1은 i 값을 수정하지 않습니다. i++ 대신 쓸 수 있습니다.

마찬가지로, j + 2은 j를 업데이트하지 않습니다. j += 2으로 작성해야합니다.

다음

는 수정 된 코드입니다 :

for (var i = 0; i < 2; i++) { 
    for (var j = i; j < 8; j += 2) { 
     console.log(arr[j].Qu); 
    } 
    console.log(arr[i]); 
} 
1

for (var i = 0; i < 2; i+=1) { 
 
     for (var j = i; j < 8; j+= 2) { 
 
      console.log(arr[j]); 
 
     } 
 
     console.log(arr[i]); 
 
    }

+0

을 던질 수 있습니다. 변경 내용을 설명하는 짧은 문장이 좋을 수도 있습니다. :) (때로는 차이점을 찾기가 어렵습니다) –

관련 문제