Если вы определяете функцию внутри анонимной функции, например функцию «обратного вызова», используемую в качестве аргумента. Давайте Array.prototype.forEach
, например:Выполняет ли функции внутри функций anononymus («обратные вызовы») переопределенную память в каждом обратном вызове?
['one','two','three'].forEach (function(item) {
function showValue(i) {
console.log (i);
}
showValue(item);
});
Будет ли функция showValue
быть "переопределены" в 3 раза?
Если записать этот код в этом варианте:
function handleItem(item) {
function showValue(i) {
console.log (i);
}
showValue(item);
}
['one','two','three'].forEach (handleItem);
Есть ли разница? по-разному или по-другому.
Что об этом варианте:
var handleItem = (function(item) {
function showValue(i) {
console.log (i);
}
return function(item) {
showValue(item);
}
})();
['one','two','three'].forEach (handleItem);
который я предполагаю, что это более "правильное" закрытие.
Будет ли это иметь какую-то разницу?
Just do 'function showValue (i) {...}' '[...] .forEach (function handleItem (item) {showValue (item);});' – Bergi