我有变量来表示我有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;
}

答案 0 :(得分:2)
两个问题:
JavaScript是一种纯粹的传值语言。当您执行increamentOrRotate(pos)
时,pos
的值,而不是pos
变量本身,会传递给该函数。更改参数(问题中的post
,但您似乎打算将pos
视为变量)对函数外pos
的值没有任何影响(除非函数关闭变量,因为post
/ pos
拼写错误,因为它在你的变量中。
相反,将调用函数的结果分配给pos
:
console.log(pos = increamentOrRotate(pos));
// ---------^^^^^^
您的代码有拼写错误,您有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;
}