「有内存泄漏的风险」这句话怎么说都是正确的, 谁也不能保证浏览器是否释放应该被释放的变量. 但 「 (...args) => dispatch(...args)」这么写并没有内部变量呀, 有啥好泄漏的 ?
不过还是要讲个例子(浏览器的 bug):
https://bugs.chromium.org/p/chromium/issues/detail?id=315190var someClass = function() {
console.log('some');
};
function getter() {
var some = new someClass();
if(true) {
return function() { //I'm done with some and don't need it
return null;
};
} else {
return function() {
return some;
};
}
}
window.f = getter();
这个代码执行完理论上变量 some 会被回收, 因为 closure 没有 catch 住 some, 但通过 devtools 里 memory - [heap snapshot] 可以发现 变量 some 没有被 GC.
所以, 这就是定义一个变量都有「有内存泄漏的风险」.