我正面临一个奇怪的关闭案例。在下面的代码片段中,defaultConfig被维护为一个闭包变量,即使初始化测试后它没有用处。为了确保配置只包含defaultConfig成员的副本,我使用了slice来处理它的元素,但它仍然保留在内存中,可以通过在render中放置一个断点来验证。此外,如果没有触及或使用它,就无法在封闭中找到它。我找不到任何理由。我正在使用Chrome。
function test() {
"use strict";
var defaultConfig = ["as", "lx", "ms", "sw"];
return view;
function view(config) {
if (!config) {
config = [];
for (var attr in defaultConfig) {
config.push(defaultConfig[attr].slice(0,1));
}
}
this.render = function() {
console.log(config);
}
}
}