Estoy tratando de entender por qué el siguiente código da como resultado un desbordamiento de la pila cuando se incluyen los paréntesis, pero no cuando se omiten.¿Por qué tengo que omitir paréntesis cuando paso una función como argumento?
Llamo a la función como un argumento para setTimeout y funciona sin parantheses, pero por supuesto falla cuando los agrego. Tuve la intuición de agregar el() después de la función. Solo espero que alguien pueda aclararme esto. ¿Cuándo son parans opcionales y no?
CASO 1:
var a = 1;
function foo() {
a++;
document.write(a);
setTimeout(foo(), 2000)
}
// RangeError: Maximum call stack size exceeded
CASO 2:
var a = 1;
function foo() {
a++;
document.write(a);
setTimeout(foo, 2000)
}
// parens are omitted on foo function and it works.
Probablemente un dup. Esto debería ayudar: http://stackoverflow.com/questions/5520155/settimeout-callback-argument/5520190#5520190 –
muchas gracias lwburk, su explicación en ese enlace lo solucionó todo. –