防止javascript首先计算对象属性
我正在创建一个国际象棋游戏,并具有以下代码行:防止javascript首先计算对象属性,javascript,Javascript,我正在创建一个国际象棋游戏,并具有以下代码行: void (!selectedPiece.moved && selectedPiece.moved = true); 它所做的是检查selectedPiece.moved是否为false,如果为false,则继续并将selectedPiece.moved设置为true 正如@Klaycon所说,它是这样读的: void (!selectedPiece.moved && selectedPiece.moved) =
void (!selectedPiece.moved && selectedPiece.moved = true);
它所做的是检查selectedPiece.moved是否为false,如果为false,则继续并将selectedPiece.moved设置为true
正如@Klaycon所说,它是这样读的:
void (!selectedPiece.moved && selectedPiece.moved) = true;
那就是当我得到一个无效的左侧赋值时。我知道我可以用if语句替换它,但我想知道是否还有其他方法可以修复它。只需添加一些括号。外部的是不必要的
void !selectedPiece.moved && (selectedPiece.moved = true);
甚至更短的方法在第一部分使用逻辑OR,而不使用逻辑NOT
void selectedPiece.moved || (selectedPiece.moved = true);
但无论如何,如果该值是布尔值,则可以不经过检查就指定true
selectedPiece.moved = true;
澄清一下,问题不在于JavaScript在编写时评估属性,而在于简单的操作顺序。目前它的评估结果就像你写的一样!selectedPiece.moved&&selectedPiece.moved=true,因此左侧赋值无效。