上面的链接是我要问的类似问题。但是我找不到关于该答案的任何官方参考。
public uploadImage() {
const input: HTMLInputElement = document.createElement('input');
input.type = 'file';
input.accept = 'image/png';
const onChange = () => {
const file = input.files[0];
const reader = new FileReader();
const onError = () => {
reader.abort();
alert('image loading failed');
};
const onLoadEnd = (evt) => {
if (evt.target.readyState === 2) {
this.readImageByBase64(evt.target.result as string);
} else {
onError();
}
};
reader.addEventListener('loadend', onLoadEnd);
reader.addEventListener('error', onError);
reader.readAsDataURL(file);
};
input.addEventListener('change', onChange);
input.click();
}
根据上述问题的答案,由于input
变量和reader
变量是函数范围的,因此事件侦听器将从元素以及onLoadeEnd
和onError
中移除还会收集垃圾吗?如果是,是否有任何背景信息或参考?(更着重于除去事件侦听器,然后进行垃圾回收)