javascript - 如何在创建一个递增的值(如头寸)时消除可变性?

标签 javascript functional-programming processing p5.js

我正在尝试在我的代码中使用更实用的方法,并且我有一个变量 posx 代表 X 轴上的位置。

它随时间变化xpos = xpos + pos:

const createCircle = ({xpos, fill}) => {
 return {
   move: (pos) => {
     xpos = xpos + pos
     noStroke()
     ellipse( xpos,10,10,10)
   }
 }
} 

我怎样才能不改变变量xpos

我读到改变变量是不好的……那么我该怎么做呢?

或者在这种情况下可以吗?

其余代码:

const circleOpts = {
  xpos: 20,
  fill: 0,
}

const createCircle = ({xpos, fill}) => {
 return {
   move: (pos) => {
     xpos = xpos + pos
     noStroke()
     ellipse( xpos,10,10,10)
   }
 }
} 

let bola;

function setup () {
  createCanvas(300,500)
  background(3)
  bola = createCircle(circleOpts)
}

function draw () {
 bola.move(10)
}

最佳答案

在这种情况下绝对没问题。

在您的例子中,您使用单个变量来表示单个值。由于此值随时间变化,因此变量会随时间变化是完全合理的。

一般来说,我非常怀疑 XYZ 总是是个好主意或总是是个坏主意的说法。一切都取决于上下文。

关于javascript - 如何在创建一个递增的值(如头寸)时消除可变性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53244329/

相关文章:

javascript - 如何在 jquery 中使用 $.param

javascript - 获取div中select的值

scala - 如何检查 Future[Option] 列表中是否存在 None

swift - Swift 中集合类型的扩展,用于查找对象之后的所有对象

list - 如何将函数仅映射到列表中的某些元素?

java - Processing 和 Eclipse 中的 split 函数是否存在于实际的 Java 中?

opencv - 在处理和 OpenCV 中使用 Minoru 3d 网络摄像头进行立体视觉

javascript - Extjs:使用提交表单上传文件

javascript - 如何将 Javascript 事件发送回 Rails 进行处理?

javascript - 如何使我绘制的指数函数在 Canvas 内增长?