变量值在增量后不变

时间:2018-01-28 15:48:07

标签: javascript

我有变量来表示我有increamentOrRotate位置增加位置如果它的值加一不超过限制说3如果超过那么我需要将它的值设为零

但问题是价值永远不会改变,这是我的代码



    let pos = 1;

    console.log(increamentOrRotate(pos)); // print 0 it should be 1
    console.log(increamentOrRotate(pos)); // print 0 it should be 2
    console.log(increamentOrRotate(pos)); // print 0 it should be 3
    console.log(increamentOrRotate(pos)); // print 0 it should be 0
    console.log(increamentOrRotate(pos)); // print 0 it should be 1

    function increamentOrRotate(post){
        pos = pos+1 > 3 ? 0 : pos++;
        return pos;
    }




2 个答案:

答案 0 :(得分:2)

两个问题:

  1. JavaScript是一种纯粹的传值语言。当您执行increamentOrRotate(pos)时,pos,而不是pos变量本身,会传递给该函数。更改参数(问题中的post,但您似乎打算将pos视为变量)对函数外pos的值没有任何影响(除非函数关闭变量,因为post / pos拼写错误,因为它在你的变量中。

    相反,将调用函数的结果分配给pos

    console.log(pos = increamentOrRotate(pos));
    // ---------^^^^^^
    
  2. 您的代码有拼写错误,您有post作为参数名称而不是pos。在您的代码中,函数中的pos是函数关闭的pos变量。但我不认为这就是你的意思。

答案 1 :(得分:1)

请改用它。它完成了这项工作。试一试....



let pos = 0;

console.log(increamentOrRotate()); // print  1
console.log(increamentOrRotate()); // print  2
console.log(increamentOrRotate()); // print  3
console.log(increamentOrRotate()); // print  0
console.log(increamentOrRotate()); // print  1

function increamentOrRotate(){
    pos = pos+1 > 3 ? 0 : pos+1;
    return pos;
}