Risoluzione dei problemi negli script

Aggiornamento: novembre 2007

Tutti i linguaggi di programmazione riservano tanto ai novizi quanto agli utenti esperti potenziali problemi e situazioni critiche. Di seguito vengono evidenziate alcune delle aree in cui possono insorgere problemi durante la scrittura di script JScript.

Errori di sintassi

Dato che nei linguaggi di programmazione la sintassi è molto più rigida rispetto al linguaggio naturale, durante la scrittura di script è importante prestare particolare attenzione ai dettagli. Se, ad esempio, si desidera che un determinato parametro sia gestito come stringa, possono insorgere problemi se il parametro non viene racchiuso tra virgolette.

Ordine di interpretazione degli script

In JScript, l'interpretazione degli script contenuti in una pagina Web dipende dalla procedura di analisi HTML del singolo browser. Uno script racchiuso nel tag <HEAD> di un documento viene interpretato prima del testo racchiuso nel tag <BODY>. Pertanto, gli eventuali oggetti creati nel tag <BODY> non esistono durante l'analisi dell'elemento <HEAD> e non possono pertanto essere modificati mediante lo script.

Nota:

Questo comportamento è specifico di Internet Explorer. Le pagine ASP e WSH ed eventuali host diversi dispongono di modelli di esecuzione differenti.

Coercizione automatica dei tipi di dati

JScript è un linguaggio non fortemente tipizzato dotato di coercizione automatica dei tipi. Di conseguenza, sebbene i valori con tipi di dati diversi non siano uguali, espressioni simili a quelle dell'esempio seguente verranno valutate come true.

"100" == 100;
false == 0;

Per assicurarsi che coincidano sia il tipo che il valore, utilizzare l'operatore di identità ===. Le espressioni seguenti restituiscono entrambe false:

"100" === 100;
false === 0;

Precedenza tra gli operatori

L'ordine di esecuzione di una determinata operazione durante la valutazione di un'espressione si basa sull'ordine di precedenza degli operatori piuttosto che sulla loro posizione all'interno dell'espressione. Pertanto, nell'esempio seguente la moltiplicazione viene eseguita prima della sottrazione, anche se nell'espressione l'operatore di sottrazione è inserito prima dell'operatore di moltiplicazione:

theRadius = aPerimeterPoint - theCenterpoint * theCorrectionFactor;

Per ulteriori informazioni vedere Precedenza tra gli operatori.

Utilizzo di cicli for...in con gli oggetti

Quando si elaborano le proprietà di un oggetto tramite un ciclo for…in, non è sempre possibile prevedere o controllare l'ordine di assegnazione dei campi dell'oggetto alla variabile contatore del ciclo. Inoltre, l'ordine può essere diverso a seconda del tipo di implementazione del linguaggio. Per ulteriori informazioni vedere Istruzione for...in.

Parola chiave with

Per quanto la parola chiave with risulti utile per fare riferimento a proprietà già esistenti in un oggetto specificato, tuttavia non può essere utilizzata per aggiungervi nuove proprietà. Per creare nuove proprietà in un oggetto è necessario fare specificamente riferimento all'oggetto. Per ulteriori informazioni vedere Istruzione with.

Parola chiave this

Per quanto la parola chiave this venga utilizzata nella definizione di un oggetto, in genere non è possibile utilizzare questa o parole chiave simili per fare riferimento alla funzione in esecuzione, se tale funzione non è la definizione di un oggetto. Se la funzione deve essere assegnata a un oggetto come metodo, la parola chiave this può essere utilizzata nella funzione per fare riferimento all'oggetto. Per ulteriori informazioni vedere Istruzione this.

Creazione di uno script che scrive uno script in Internet Explorer o in ASP.NET

Quando l'interprete rileva un tag </SCRIPT>, lo script corrente viene interrotto. Per visualizzare il termine "</SCRIPT>", riscriverlo suddividendolo in almeno due stringhe, ad esempio "</SCR" e "IPT>", e concatenarle nell'istruzione che le scriverà.

Riferimenti a finestra impliciti in Internet Explorer

Dato che più finestre possono essere aperte contemporaneamente, un riferimento a una finestra implicito viene considerato come riferimento che punta alla finestra corrente. Per le altre finestre, è necessario utilizzare riferimenti espliciti.

Vedere anche

Attività

Sviluppo di codice JScript con Visual Studio

Concetti

Debug di codice JScript con Visual Studio

Altre risorse

Scrittura, compilazione e debug di codice JScript