2012-02-12 5 views
37

Un amico mi ha scritto del codice e c'era un file con uno strano errore di sintassi. Dopo un po 'di caccia, ho ristretto la scelta a questa sezione di codice, che dovrebbe riprodurre l'errore:Come posso risolvere questo errore di sintassi del punto e virgola mancante in Javascript?

var say = functіon(message) { 
    alert(message); 
    return message; 
}; 

say(say("Goodbye!")); 

Quando eseguo questo, vedo un errore nella console di Internet Explorer che dice SCRIPT1004: Expected ';'. Non vedo un punto e virgola mancante, e non riesco a immaginare dove vuole che ne metta uno.

Dove si aspetta un punto e virgola e perché si aspetta un punto e virgola?

+1

'dire (dire (" Arrivederci! "););'? – tftd

+2

Si ottiene anche un errore in Firebug: http: // jsfiddle.net/AdHZY/ –

+1

@tftd: i punti e virgola dovrebbero apparire solo alla fine delle righe. Ciò causerebbe un errore. –

risposta

69

Il problema è che il i in funzione è il carattere unicode i. Se lo si cambia in "normale" i, dovrebbe funzionare.

Ma ora mi chiedo come l'hack :) hai preso un carattere Unicode non: P

unicode error in js

+1

Penso che sia [questo] (http://en.wikipedia.org/wiki/Dotted_I_ (Cyrillic)) personaggio. –

+0

@Rocket sì lo è. Char '456'. – PeeHaa

+0

Per curiosità, come hai fatto a capire esattamente cosa c'era che non andava? – Jason

14

Hai scritto male la "funzione" :)

var say = function(message){ 
    alert(message); 
    return message; 
}; 

say(say("Goodbye!")); 

Hai inserito functіon :)

+0

'" functіon "===" function "' –

+0

Visivamente, non è scritto male. Sospetto che @Rocket suggerisca che una delle lettere sia un altro simbolo travestito. –

+3

@Rocket non nel suo caso. Ha un personaggio che appare normale ma non lo è. Anche il mio IDE diventa rosso con il suo codice :) – tftd

6

Ho copiato il codice in jsfiddle, e Chrome troppo dà un errore. Ho cancellato la parola "funzione" e ho riscritto la "funzione", e ha funzionato bene.

Ci deve essere qualche carattere in più lì.

+0

Non c'è altra spiegazione che abbia senso. Demo di ridigitare la funzione '': http://jsfiddle.net/AdHZY/1/ –

6

ho copiato e incollato nel mio Notepad ++ e il vostro look codice come questo in my notepad ++, ridigita la parola chiave function, i viene sostituita da?.

var say = funct?on(message) { 
     alert(message); 
     return message; 
    }; 
    say(say("Goodbye!")); 
+2

Vuoi dire 'i', non' t', giusto? –

+0

Sì, ho appena commesso un errore durante la digitazione e mi dispiace per quello. Grazie. –

0

Ho avuto un problema simile e lo stesso codice di errore durante il debug di lavoro di qualcun altro. Per risolvere questo problema ho incollato la sezione di codice in Blocco note e quindi ho ricopiato di nuovo in Visual Studio. L'errore è andato via. Penso che chiunque abbia scritto il codice originariamente deve averlo copiato da qualche parte con alcuni strani personaggi.

0

Infatti, è stato inserito unicode "i" anziché normale "i". ottengo gli errori compagni in VSCode:
',' expected. (1, 29)
',' expected. (2, 10)
Declaration or statement expected. (4, 3)
si può provare a valutare "functіon" == "function" così:

function compare() { 
 
    return "functіon" === "function" 
 
} 
 
console.log(compare())

Tuttavia, quando provo a confrontarlo disegnando "funzione" me stesso: restituisce vero;

function compare2() { 
 
    return "function" == "function" 
 
} 
 
console.log(compare2())

Inoltre, non ho incluso virgola qui, in JavaScript non sono necessari.