아래 코드에서 horiz
이 선언되고 빈 루프로 채워지는 for 루프를 통해 실행됩니다. "var"
선언은 horiz
적용됩니까 두 번째 라인 등의 verti
에 대한 동일 (즉 세미콜론은 "var"
선언을 나누기) 또는 "var"
선언은 horiz
, verti
, here
, path
및 unvisited
을 초기화합니까?자바 스크립트 변수 선언에서 쉼표와 세미콜론을 섞는 효과
var horiz =[]; for (var j= 0; j<x+1; j++) horiz[j]= [],
verti =[]; for (var j= 0; j<x+1; j++) verti[j]= [],
here = [Math.floor(Math.random()*x), Math.floor(Math.random()*y)],
path = [here],
unvisited = [];
편집 : 명확성을 위해 여기에 전체 기능을 추가했습니다. 함수의 변수가 전역 변수가 아니거나 함수 외부에서 초기화되고 있습니다.
편집 2 : 코드는 여기에서있다 : http://rosettacode.org/wiki/Maze_generation#JavaScript
function maze(x,y) {
var n=x*y-1;
if (n<0) {alert("illegal maze dimensions");return;}
var horiz =[]; for (var j= 0; j<x+1; j++) horiz[j]= [],
verti =[]; for (var j= 0; j<x+1; j++) verti[j]= [],
here = [Math.floor(Math.random()*x), Math.floor(Math.random()*y)],
path = [here],
unvisited = [];
for (var j = 0; j<x+2; j++) {
unvisited[j] = [];
for (var k= 0; k<y+1; k++)
unvisited[j].push(j>0 && j<x+1 && k>0 && (j != here[0]+1 || k != here[1]+1));
}
while (0<n) {
var potential = [[here[0]+1, here[1]], [here[0],here[1]+1],
[here[0]-1, here[1]], [here[0],here[1]-1]];
var neighbors = [];
for (var j = 0; j < 4; j++)
if (unvisited[potential[j][0]+1][potential[j][1]+1])
neighbors.push(potential[j]);
if (neighbors.length) {
n = n-1;
next= neighbors[Math.floor(Math.random()*neighbors.length)];
unvisited[next[0]+1][next[1]+1]= false;
if (next[0] == here[0])
horiz[next[0]][(next[1]+here[1]-1)/2]= true;
else
verti[(next[0]+here[0]-1)/2][next[1]]= true;
path.push(here = next);
} else
here = path.pop();
}
return {x: x, y: y, horiz: horiz, verti: verti};
}
이 코드를 실행하고 변수의 값을 확인 했습니까? 이런 질문을하는 stackoverflow를 실행하지 마십시오. 코드를 땜장이. 쉼표를 제거하고 세미콜론을 추가하거나 다른 방법으로 어떤 일이 발생하는지 확인하십시오. 당신은 마른 대답보다는 그것으로부터 많은 것을 배울 것입니다. – Azamantes
예 코드를 실행했는데 이해할 수있는 것은 이론적이며 이미 쉼표와 세미콜론을 사용하여 알아낼 수 없습니다. 이제 첫 번째 줄은 "horiz"를 초기화하고 "horiz"를 채우기 위해 for 루프를 실행한다는 것을 알고 있습니다. 두 번째 줄은 "verti"등에 대해 동일한 작업을 수행하고 있습니다. 그러나 이제는 나를위한 질문이 ** "var" horiz 변수에만 적용되고 세미콜론과 마주 치거나 "verti", "here", "path"및 "unvisited"로 초기화됩니다. – a20