Una stringa non può essere invocata come una funzione
TypeError: String may not be invoked as a function
Tra gli errori di tipo "TypeError", ossia quelli che vengono restituiti quando un valore non è del tipo aspettato dall'editor di script, uno non molto frequente è il seguente: "TypeError: String may not be invoked as a function", Fig. 1:
L'errore in questione viene comunicato dall'editor di script in maniera immediata al momento del salvataggio del file, evidenziando anche la riga di codice che genera l'eccezione. Questo agevola molto il lavoro di debug se non fosse che l'errore risulta fuorviante.
Vediamo un esempio di codice che restituisce quel messaggio di errore:
function test() {
var test, start, stop;
//...
test = 'tempo' (stop - start);
}
La riga di codice incriminata è la seguente ed il motivo reale è la mancanza dell'operatore '+' per la concatenazione della stringa 'tempo' con il relativo valore calcolato (stop - start):
// Riga di codice che genera l'errore
test = 'tempo' (stop - start);
Allora perchè l'errore mi comunica che "una stringa non può essere invocata come una funzione"?
Semplicemente perchè l'editor di Apps Script non sa che le nostre intenzioni sono quelle di concatenare una stringa con un valore calcolato tra parentesi tonde bensì secondo lui la nostra volontà è quella di invocare una funzione che erroneamente abbiamo scritto tra 2 apici, ovvero:
// L'editor di script ipotizza che volessimo scrivere:
test = tempo(stop - start);
// ...mentre la riga di codice corretta è:
test = 'tempo' + (stop - start);
L'esempio in questione è molto semplice, tuttavia ci fa capire che a volte una segnalazione di errore non descrive la vera causa della sua natura ed è conseguentemente necessario affidarsi all'occhio e all'esperienza.
Non ci sono commenti
Nessuno ha ancora commentato questo articolo, fallo tu per primo!
scrivi un commento