【译文】JavaScript纯函数和非纯函数

纯函数 Vs.非纯函数

纯函数

纯函数对于相同的参数总是返回相同的结果。它不依赖程序执行过程中任何状态和数据的变化。它仅仅依赖于输入的参数。它们没有任何副作用,如网络或数据库调用,也不改变任何传递给它们的变量参数。

例子

function getSquare(x) {
   return x * x;
}

非纯函数

任何改变它的参数的内部状态,或者外部变量的值的函数,都是非纯函数。它们可能有副作用,如网络或数据库的调用,并且可能改变传递给它们的变量的值。

例子

function getSquare(items) {
  var len = items.length;
  for (var i = 0; i < len; i++) {
    items[i] = items[i] * items[i];
  }
  return items;
}

Math.random()是非纯函数;它会改变Math对象的内部状态,这样你才能成功获得不同的值。

JavaScript教程



此条目发表在博客, 服务器, 程序开发, 计算机安全分类目录,贴了, , , , , , 标签。将固定链接加入收藏夹。