Uso improprio di JavaScript
In questo capitolo si discuterà l'uso di errori JavaScript.
Applicazione errore di operatore di assegnazione
In programma JavaScript se si utilizza un'istruzione condizionale se l'operatore di assegnazione è il segno di uguale (=) genererà un risultato di errore, l'approccio corretto è quello di utilizzare un confronto tra due segni uguali (==).
if condizionale restituisce false (ci aspettiamo), perché x non è uguale a 10:
if condizionale restituisce true (non che ci aspettavamo) dichiarazione viene eseguito perché le condizioni per l'assegnazione x 10,10 è vero:
if condizionale restituisce false (non quello che ci aspettavamo) dichiarazione viene eseguito perché le condizioni per l'assegnazione x 0,0 è falso:
Restituisce il valore della cessione variabile. |
confronto Errori comuni
In confronto convenzionale, il tipo di dati viene ignorato, se la seguente dichiarazione condizione ritorna vero:
In operazione di confronto rigoroso, un calcolo identità === operatore, mentre il valore dell'espressione di controllo di tipo, le seguenti condizioni if restituisce false:
Questo errore si verifica spesso in l'istruzione switch, interruttore dichiarazione calcolato utilizzando l'operatore di identità (===) sono stati confrontati:
Gli esempi che seguono eseguiranno pop avviso:
Gli esempi che seguono sono incoerenti perché il tipo non esegue pop-up di avviso:
Aggiunta e considerazioni di connessione
L'aggiunta di due numeri insieme.
La stringa di connessione per collegare le due cose.
Addizione e JavaScript sono collegati tramite l'operatore +.
Quindi, possiamo vedere due numeri insieme e collegato a una serie di numeri e distinzione a titolo di esempio:
Uso delle variabili sommando i risultati sono inconsistenti:
var y = 5;
var z = x + y; Risultati // z è 15
var x = 10;
var y = "5";
var z = x + y; Risultati // z è "105"
Prova »
Si noti l'uso dei dati in virgola mobile
JavaScript Tutti i dati si basano sul tipo a 64-bit in virgola mobile di dati (float) per memorizzare.
Tutti i linguaggi di programmazione, tra cui JavaScript, per la precisione floating point dei dati sono difficili da determinare:
var y = 0,2;
var z = x + y Risultati // z è 0.3
if (z == 0.3) // Restituisce false
Prova »
Posso risolvere questo problema, è possibile utilizzare una moltiplicazione e divisione intero da risolvere:
Filiali stringa JavaScript
Usiamo interruzioni di riga per eseguire istruzioni JavaScript nella stringa:
Tuttavia, nella stringa viene dato ritorno direttamente carrello per:
Possiamo scegliere lo strumento di sviluppo o premere F12 per visualizzare il messaggio di errore:
interruzioni di riga String bisogno di utilizzare una barra rovesciata (\), come segue:
virgola sbagliata
L'esempio che segue, dal momento che il male e virgola, se non verrà eseguito il blocco di istruzioni di codice:
Rientro Precauzioni dichiarazione
JavaScript è il default automaticamente termina l'ultima riga di codice.
I due esempi seguenti restituiscono lo stesso risultato (un non un punto e virgola):
JavaScript può anche essere utilizzato per terminare un'istruzione più righe.
I seguenti esempi restituiscono lo stesso risultato:
Tuttavia, i seguenti esempi di risultati vengono restituitinon definita:
Perché c'è un tale risultato? Perché in JavaScript, esempi di codice 4 coerente e il seguente codice:
function myFunction(a) { var power = 10; return; // 分号结束,返回 undefined a * power; }
risolvere
Se si tratta di un'istruzione incompleta, come segue:
var
JavaScript tenterà di leggere la seconda istruzione riga:
power = 10;
Tuttavia, perché questa affermazione è completo:
return
JavaScript si spegnerà automaticamente la dichiarazione:
return;
In JavaScript, il punto e virgola è opzionale.
Dal momento che il ritorno è una frase completa, si spegnerà istruzione return JavaScript.
Nota: non rompere la linea della dichiarazione di ritorno. |
Utilizzare un nome di indice di matrice
Molti linguaggi di programmazione consentono l'uso del nome come indice di matrice.
Per utilizzare il nome come l'indice dell'array è chiamato un array associativo (o hash).
JavaScript non supporta l'uso del nome di array di indice, solo un indice numerico.
Esempi
persona [0] = "John" ;
persona [1] = "Rossi" ;
persona [2] = 46;
var x = person.length; // Person.length restituisce 3
var y = persona [0]; // Persona [0] restituisce "John"
Prova »
In JavaScript, utilizzare il nome dell'oggetto come un indice.
Se si utilizza il nome come un indice quando si accede la matrice, JavaScript ridefinirà la matrice di serie di oggetti.
Dopo aver eseguito tale operazione, non saranno più utilizzati metodi e le proprietà della matrice, altrimenti verrà generato un errore:
Esempi
persona [ "firstName"] = " John";
persona [ "Cognome"] = " Rossi";
persona [ "age"] = 46 ;
var x = person.length; // person.length restituisce 0
var y = persona [0]; // Persona [0] restituisce il valore undefined
Prova »
Definire un elemento di un array, e, infine, non può aggiungere una virgola
Gli errori sono definiti:
points = [40, 100, 1, 5, 25, 10,];
La corretta definizione del modo in cui:
points = [40, 100, 1, 5, 25, 10];
Definire l'oggetto, e, infine, non può aggiungere una virgola
Gli errori sono definiti:
websites = {site:"本教程", url:"www.w3big.com", like:460,}
La corretta definizione del modo in cui:
websites = {site:"本教程", url:"www.w3big.com", like:460}
Non definito NOT NULL
In JavaScript, null per gli oggetti, non definito per le variabili, proprietà e metodi.
Gli oggetti sono definiti possibile solo come nullo, altrimenti non definito.
Se vogliamo verificare se la presenza dell'oggetto, quando l'oggetto non è ancora definita viene generato un errore.
uso sbagliato:
if (myObj !== null && typeof myObj !== "undefined")
Il modo giusto è che abbiamo bisogno di utilizzare typeof per rilevare se un oggetto è stato definito:
if (typeof myObj !== "undefined" && myObj !== null)
ambito Block
JavaScript non crea un nuovo ambito in ogni blocco di codice, la portata generale di ogni blocco di codice sono globali.
La seguente variabile codice che restituisce 10 invece di indefinito: