1

我正在将一些 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]”,然后再次分配一个空数组。

在我写这篇文章时,我想到可能是在分配新数据之前清除任何以前的信息,但我不确定。

4

3 回答 3

1

实际上将一个空数组分配给blocks[z],然后将blocks[z](空数组)的值分配给slice

基本上,这只是为两个(或更多)变量赋值的一种简单方法

于 2013-02-07T00:01:54.573 回答
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

等等

于 2013-02-07T00:10:20.300 回答
0
x = y = z;

完全等同于:

y = z;
x = y;

以该顺序。

于 2013-02-07T00:01:50.987 回答