Javascript, HTML, CSS e... !
0 commenti

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:



TypeError String may not be invoked as a function

Fig. 1 - TypeError String may not be invoked as a function


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.

Tags

Michele Pisani

Michele Pisani

Sviluppatore Javascript ed esperto in Digital Analytics

L'esperienza nel settore Digital Analytics unita ad anni di sviluppo in Javascript ha trovato la massima espressione in Google Apps Script che mi ha permesso, con estrema facilità e poche righe di codice, di realizzare potenti applicazioni interattive e processi automatizzati integrati con i prodotti della G Suite.

Come contattarmi
scrivi un commento

0 Commenti

Non ci sono commenti

Nessuno ha ancora commentato questo articolo, fallo tu per primo!

scrivi un commento

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato.I campi contrassegnati da un * sono obbligatori
Puoi utilizzare i seguenti tag nei commenti:
[bold]testo[/bold] se vuoi evidenziare un testo con il grassetto[code]function helloworld() { }[/code] se vuoi pubblicare una porzione di codice[url]http://www.appsscript.it[/url] se devi riferirti ad un indirizzo web