我正在将一些 JavaScript 移植到 Java,但我很难理解以下代码中的两行:
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);
}
}
}
第一行声明“slice”,然后分配“blocks[z]”,然后再次分配一个空数组。
当我写这篇文章时,我想到可能是为了在分配新数据之前清除任何以前的信息,但我不确定。
实际上,将一个空数组分配给
blocks[z]
,然后将blocks[z]
(空数组)的值分配给slice
。
基本上,这只是为两个(或更多)变量赋值的一种简短方法
是和否,它会清除以前的数据,但这就是
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
等等
x = y = z;
完全等同于:
y = z;
x = y;
按这个顺序。