Quote Originariamente inviata da lanvoel Visualizza il messaggio
Ma se si toglie il commento alle due righe, la funzione muove() diventa interna alla funzione avvia() e, non so perché, non viene riconosciuta e dà l'errore "muovi is not a function".
[...]
Stai passando a setInterval() una stringa che contiene un pezzo di codice dove viene chiamata la funzione muove(), che quando verrà eseguita non esisterà più, dato che l'esecuzione sarà posticipata di un certo lasso di tempo trascorso il quale ci si troverà già al di fuori della funzione che la definisce, ovvero fuori da avvia().

A parte che continuo a non comprende il motivo per cui si vuole obbligatoriamente definire quella funzione dentro l'altra, visto che non è una strada obbligata e mi sfuggono i vantaggi nel farlo, ma l'unico modo per far "sopravvivere" la funzione anche all'esterno di avvia() è sfruttare il meccanismo della Closure.

Ad esempio, si può scrivere il codice in questo modo:
codice:
cronometro = window.setInterval(muove, 10);