循环内部不会更改Javascript变量值

时间:2015-02-11 16:38:56

标签: javascript

嗨我在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的值没有递增。是什么问题

6 个答案:

答案 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分配也是如此。