如何创建一次使用后变量值发生变化的函数?

时间:2020-05-20 09:18:15

标签: javascript

function catGenerate(){
  var image = document.createElement('img');
  var division = document.getElementById('flexID');
  pic1 = 300;
  image.src = "https://placekitten.com/200/" + String(pic1) ;
  division.appendChild(image);
  pic1++;
}

使用该功能后,我想将pic1值加1,怎么办?

1 个答案:

答案 0 :(得分:0)

我不鼓励使用全局变量。这是一个经典的关闭示例,您的生成器函数应返回如下函数:

function catGenerator() {
  // internal state
  let pic1 = 300;

  return function doSomething() {
    var image = document.createElement('img');
    var division = document.getElementById('flexID');
    image.src = "https://placekitten.com/200/" + pic1;
    division.appendChild(image);
    pic1 += 1;
  }
}

然后像这样使用它:

const generator = catGenerator();
generator(); // pic1 = 300
generator(); // pic1 = 301
... etc

这是一篇很好的博客文章,解释了其工作原理:https://medium.com/@prashantramnyc/javascript-closures-simplified-d0d23fa06ba4