小编Ola*_*sen的帖子

处理 DOM 操作时的纯函数

我试图围绕纯函数进行思考,但我不确定我是否真的理解它。我知道纯函数不应该改变外部状态,并且只要它具有相同的输入,它每次都应该返回相同的输出。

我知道例如这个函数是不纯的,因为它改变了程序其他部分可能使用的 car 变量:

const addToCart = (cart, item) => { 
  cart.push(item); 
  return cart; 
};
Run Code Online (Sandbox Code Playgroud)

纯状态下的相同函数:

const addToCart = (cart, item) => { 
  const newCart = lodash.cloneDeep(cart); 
  newCart.push(item); 
  return newCart; 
};
Run Code Online (Sandbox Code Playgroud)

这对我来说很有意义。我了解到纯函数应该总是返回一些东西。

但是,我正在处理一些需要我使用 HTML5 画布元素的东西,我有这个功能可以清除画布:

function clearCanvas(canvas) { 
  canvas.getContext('2d').clearRect(0, 0, canvas.width, canvas.height); 
}
Run Code Online (Sandbox Code Playgroud)

我怎样才能使上述函数纯?我意识到它是不纯的,因为它不返回任何东西,而且它改变了画布变量的状态。DOM 操作本质上是不纯的吗?

任何帮助,将不胜感激 :)

javascript dom functional-programming canvas

10
推荐指数
2
解决办法
1286
查看次数

标签 统计

canvas ×1

dom ×1

functional-programming ×1

javascript ×1