2017-03-25 3 views
0

변수 txt가 10 인 이유가 왜 돌아 왔을 때 명령문에 적용되지 않는지 이해하려고합니까? 변수를 10으로 설정하면 루프가 다시 돌아올 때 출력에 적용하지 않아야합니까? 그것은 각 사이클 후 리셋되는되지 않도록,출력에 두 번째 변수가 적용되지 않는 이유

function myFunction() { 
 
    var myNumber = 2; 
 
    var txt = 10; 
 
    while (myNumber != Infinity) { 
 
     myNumber = myNumber * myNumber; 
 
     txt = txt + myNumber + "<br>"; 
 
    } 
 
    document.getElementById("demo").innerHTML = txt; 
 
}
<button onclick="myFunction()">Try it</button> 
 

 
<p id="demo"></p>

+1

을 문제가 무엇인지 나에게 분명하지 않다 : 당신이 txt을 로그 아웃 한 경우

이 각 반복에 볼 것 인 것이다. * 적용 *이란 무엇을 의미합니까? 예상되는 결과는 무엇입니까? – trincot

+0

그래서 기본적으로 첫 번째 출력이 14와 같은 이유를 이해하려고 시도하지만 함수가 돌아가서 txt = 10이 출력의 나머지 부분에 적용되지 않을 때 루프됩니다. @trincot – CheckLife

+0

첫 번째 반복 전에 숫자는 '10'입니다. 이 반복이 끝나면'10 + 4'의 합을 마지막에'
'문자열로 변환하므로''14
"'이됩니다. 그래서 당신이 원하는 출력을 모르겠지만 각 숫자가 '10'에 의해 상쇄되기를 원한다면 '10'이 더 이상 존재하지 않기 때문이 아닙니다. –

답변

0

변수는 루프 반복마다 변경됩니다.

는의 모든 반복에 값을 따라 보자 등등

#1 iteration: txt == 10 + 4 + "<br>" == "14<br>"

#2 iteration: txt == "14<br>" + 16 + "<br>" == "14<br>16<br>"

#3 iteration: txt == "14<br>16<br>" + 256 == "14<br>16<br>256"

그리고있다. 또한 반복 할 때마다 <p>의 HTML 코드를 완전히 변경하는 대신 append과 같이 코드를 추가합니다. 기본적으로 변수 txt는 각 반복마다 변경되며 사용자가 마지막 값을 표시합니다. <p>

+0

설명해 주셔서 고맙습니다. 남자 !!! – CheckLife

0

귀하의 var txt = 10는 while 루프 내부되지 않습니다 :

여기 내 코드입니다. 귀하의 질문은 txt = 10을 while 루프로 실행할 때마다 myNumber 단위로 증가 시키길 원한다고 가정합니다. 이 경우 다음과 같이 코드를 단순화 할 수 있습니다.

+0

예 아니, 나는 출력이 지금 인 이유를 완전히 이해한다. – CheckLife

0

나는이 문제가 txt에 추가되는 부분이라고 생각합니다. 올바르게 이해하면 문제가 해결 될 것입니다.

function myFunction() { 
var myNumber = 2; 
var txt = 10; 
var output = ""; 
while (myNumber != Infinity) { 
    myNumber = myNumber * myNumber; 
    txt = txt + myNumber; 
    output = output + txt + "<br>"; 
} 
document.getElementById("demo").innerHTML = output; 
} 
0

값이 10 인 var text은 첫 번째 반복에서 설정된 문자열 값을 다시 할당받습니다. 그래서

// 1) 14 
// Effectively '14<br>` 
// A result of 10 + (2*2) + <br> 

// 2) 14 
// 16 
// Effectively '14<br>16<br>` 
// This is because txt was '14<br>` 
// So '14<br>` + (4*4) + <br> 

// 3) 14 
// 16 
// 256 
// Effectively '14<br>16<br>256<br>` 
// This is because txt was '14<br>16<br>` 
// So '14<br>16<br>` + (16*16) + <br> 

그리고 ...

+0

로그 아웃했을 때 당신이 무엇을 말하고 있습니까? – CheckLife

+0

나는'console.log'의 사용을 언급하고있었습니다. – Pineda

관련 문제