变量被篡改

channel.onvideo = (pid, track) => {
      const remote = this.$refs['remote'] as HTMLDivElement
      const video = this.createVideo(new MediaStream([track]))
      remote.appendChild(video);
      channel.onvideoclose = (pid1, track1) => {
        console.log(pid1, track1, pid, track);
        if (pid1 === pid && track1 === track) {
          remote.removeChild(video);
        }
      }
    }
以typescript完成的上述示例代码所示,channel.onvideo绑定了一个函数,并且在onvideo内部,channel.onvideochlose绑定了一个函数,并且该函数内使用了onvideo的变量。会导致什么问题?

onvideo每被执行一次,onvideoclose就会重新执行一次函数绑定操作,与此同时,onvideo内部的变量已经发生改变了,会导致onvideoclose函数内部所使用的onvideo的变量也会随之发生变化。假设onvideo在第一次被执行的时候,pid已经等于123了,但是在onvideo在第二次被执行的时候,pid变成234了,onvideoclose内部所引用的onvideo变量pid也随之变成了234。