Siehe z.B. </archiv/2008/9/t176493/#m1161369>
Also werden alle Variable Statements ausgeführt, wenn der Funktionskörper 'betreten' wird, auch wenn die Variable Statements in einem weiteren Block Statement stehen.
Finde ich nicht besonders logisch – scheint aber so zu sein.
Folgefrage:
Wie kann ich mir dann die Variablendeklaration sparen, wenn sie nicht benötigt wird?
Pseudocode:
function computeValue (val) {
if (resultCached){
return resultFromCache;
} else {
var foo = {}, bar = 'blablubb';
[...]
}
}
Wenn jetzt die Funktion computeValue() sehr oft ausgeführt wird, wäre es doch sparsamer, die Variablendeklaration nicht durchzuführen.