• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Closures

vsenol

Mitglied
Code aus MDN :

<code>
function makeSizer(size) {
return function() {
document.body.style.fontSize = size + 'px';
};
}

var size12 = makeSizer(12);
var size14 = makeSizer(14);
var size16 = makeSizer(16);

document.getElementById('size-12').onclick = size12;
document.getElementById('size-14').onclick = size14;
document.getElementById('size-16').onclick = size16;
</code>

Mir leuchtet nicht wirklich auf, warum für diesen Zweck eine Closure benötigt wird. Also warum der Code nicht ohne die innere Funktion arbeiten kann.

<code>
function makeSizer(size) {

document.body.style.fontSize = size + 'px';

}

var size12 = makeSizer(12);
var size14 = makeSizer(14);
var size16 = makeSizer(16);

document.getElementById('size-12').onclick = size12;
document.getElementById('size-14').onclick = size14;
document.getElementById('size-16').onclick = size16;
</code>
 
Werbung:
Weil onclick eine function erwartet. Im letzeren Fall ist size12 einfach undefined, weil makeSizer nichts zurückgibt.
Warum man es aber überhaupt so kompliziert machen muss verstehe ich aber auch nicht. onclick = makeSizer(12) würde es tun.
 
Werbung:
Natürlich macht das Sinn. Die Funktion im zweiten Beispiel hat keinen Rückgabewert. Auch nicht null. Also ist das undefined.
 
Zurück
Oben