使用赋值表达式(`var a = b = c`)声明变量有什么作用?

问题描述 投票:0回答:3

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

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

javascript assignment-operator variable-declaration
3个回答
1
投票

实际上,将一个空数组分配给

blocks[z]
,然后将
blocks[z]
(空数组)的值分配给
slice

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


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
投票
x = y = z;

完全等同于:

y = z;
x = y;

按这个顺序。

© www.soinside.com 2019 - 2024. All rights reserved.