저는 프로그램하는 법을 배우는 중이며 바이너리로 카운트하는 프로그램을 만들려고했습니다.바이너리로 계산하기
제공된 10 진수를 2 진수로 변환 할 수있는 함수를 만들었고 정상적으로 작동하는 것처럼 보였습니다.하지만 for 루프를 사용하여 위로 계산하려고하면 브라우저가 멈추고 이유를 이해할 수 없습니다. 비슷한 while 루프를 사용하면 필요한 결과를 얻을 수 있습니다.
문제는 하단에 주석 처리되어 있습니다. 제가 여기서 뭘 잘못하고 있는지 알아내는 데 도움주세요. 여기
내 코드입니다 : 당신은toBinary
기능에
i
를 선언하지 않은
function isOdd(num) {return num % 2};
var toBinary = function (number) {
ints = [];
binary = [];
ints.push(Math.floor(number));
while (number >= 1) {
number = (Math.floor(number))/2;
ints.push(Math.floor(number));
}
for (i=ints.length-1;i>=0;i--) {
if (isOdd(ints[i])) {
binary.push(1);
} else {
binary.push(0);
}
}
if (binary[0] === 0) {
binary.splice(0,1);
}
return binary;
};
var count = 0;
while (count <= 50) {
console.log(toBinary(count));
count++;
}
/*
for (i=1;i<=50;i++) {
console.log(toBinary(i));
}
*/
솔직히 말해서 처음에는 답을 이해할 수 없었지만 루프 구문에서 var을 사용할 수있는 것으로 나타났습니다. 나는 시험해 보았다. 그리고 그것은 의도 된대로 일하고있다, 정말로 고마워! 그러나 개인적으로 나는 카운팅 루프의 변수 이름을 내가 다른 것보다 다른 것으로 변경했다면 계산 속도가 훨씬 빨라 졌음을 알았습니다. – ecchi
하지만 변수 이름 만 변경해도 실제 문제는 해결되지 않습니다. 문제는 여러분이'i'와 전역 범위를 정의하고 있으며 이것이 다른 범위 안에서 이것이 무엇을 초래하는지 알지 못한다는 것입니다. 현재 프로그래밍을 배우고 있으므로 Javascript 범위에 대한 자습서를 살펴 보는 것이 좋습니다. – user1983983
그래서 내가 한 일은 옳은 일이 아닙니다. 나는 범위에 대해 더 많이 읽을 것입니다. 고마워요! – ecchi