2013-02-06 3 views
1

내가 자바 일부 자바 스크립트를 포팅하고있어 내가 다음 코드 조각의 두 줄을 이해 힘든 시간을 보내고 있습니다 : 첫 번째 줄은 "슬라이스"를 선언한다자바 스크립트 세 대입

var blocks=[]; 
for (var z=0; z<size; z++) { 
    var slice=blocks[z]=[]; //Those are the lines I don't understand. 
    for (var x=0; x<size; x++) { 
     var row=slice[x]=[]; //Those are the lines I don't understand. 
     for (var y=0; y<size; y++) { 
      row[y]=isFull(x,y,z); 
     } 
    } 
} 

한 다음, "blocks [z]"를 할당 한 다음 빈 배열을 다시 할당합니다.

필자는이 글을 쓰면서 새로운 데이터를 할당하기 전에 이전 정보를 지우는 것이 어쩌면 내 머리로 떠오를 지 모르겠다. 순서대로

y = z; 
x = y; 

:

답변

1

실제로 빈 배열은 blocks[z]에 할당되고 blocks[z] (빈 배열) 값은 slice에 할당됩니다.

은 기본적으로는 두 개 이상의 변수

+0

그래서'row' 상관없이'블록에 포함되는 것없고, 항상 빈 배열로 가득합니다 [Z]'는'slice' 및 아닌가요? – Deses

+1

루프가 끝날 때까지'slice'는 빈 배열을 갖는 배열이어야하지만'row'는'isFull' 함수의 반환 값을 취하는 항목을 가진 배열이 될 것입니다 ('console.log (슬라이스, 행)'그리고 당신은 값을 볼 수) –

+0

오오 ... 이제는 내가 그것을 이해하는 모든 출력을 볼! 고맙습니다. – Deses

0
x = y = z; 

은 정확히 동일합니다.

1

예와 아니오, 그것은 이전의 데이터를 삭제 할에 값을 할당하는 짧은 방법,하지만 var 어쨌든 무엇을하고 있는지입니다. 중요한 부분은 다음과 같은 라인이

blocks =[]; // blocks is an array of zero length 'filled' with NULL values; 
var slice = blocks[z]; // slize would be the same as blocks[z] so it'd be NULL 
blocks[z] = []; // blocks[z] is now an zero length array filled with NULL values. 

모든 할당 코드는 그래서 처음 blocks[z]에 배열을 할당 오른쪽에서 왼쪽으로 실행을 중단하고 var slice에 같은 배열을 할당하지 않도록이 배열을 할당한다는 것입니다

+0

비록 난처하게 굴지 만, 나는 그것을 얻었다 고 생각합니다. 정말 고마워! – Deses

관련 문제