嗨我在javascript中有一些全局变量。我根据条件在循环内更改这些变量。代码如下:
var isrun=true;
var isleft=false;
var isright=true;
var isup=false;
var isdown=false;
var x=0;
var y=300;
function startstop(){
var elem = document.getElementById("start");
if (elem.value==="Start")
{
elem.value = "Stop";
var mycanvas=document.getElementById("Canvas");
var ctx=mycanvas.getContext('2d');
ctx.beginPath();
ctx.lineWidth=10;
ctx.strokeStyle="#ff0000";
while (isrun) {
if(isright){
x=x++;
}
if(isup){
y=y--;
}
if(isleft)
{
x=x--;
}
if(isdown)
{
y=y++;
}
在上面的代码中,虽然isright的值为true但x的值没有递增。是什么问题
答案 0 :(得分:0)
那是因为您将变量分配给当前值。
x=x++;
与x=x
相同,因为x++
在分配后会增加。
您可以x=++x
增加预分配,也可以只使用x++
。
答案 1 :(得分:0)
您不应在作业中使用postfix increment/decrement operators - 它会在更新后重新分配旧值!
x = x+1; // x += 1; if you want
或
x++; // ++x; if you want
但不是混合。
答案 2 :(得分:0)
写x++;
而不是x=x++;
x在再次分配之后递增,如果你写了x=++x;
,那么它会起作用当然这与简单的x++;
相比毫无用处
答案 3 :(得分:0)
++
仅在被调用一次后递增值,因此,如果您有x=0
并致电x++
,则x
仍然等于0
,而另一个x++
{1}}会使x等于1
答案 4 :(得分:0)
因为您使用x++
,它首先分配原始x
值,然后在不指定值的情况下递增。所以你总是有x
值没有任何改变。只需x++
或x = x + 1
。
答案 5 :(得分:-1)
你在做:
x = x++
仅指定x = x
。
只做
x++
或x = x+1
。
所有这些x / y分配也是如此。