2012-02-12 50 views
37

Un amigo me escribió un código y había un archivo con un error de sintaxis extraño. Después de un poco de caza, que reducido a esta sección del código, que debe reproducir el error:¿Cómo soluciono este error de sintaxis de punto y coma en Javascript?

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

say(say("Goodbye!")); 

Cuando ejecuto esto, veo un error en la consola de Internet Explorer que dice SCRIPT1004: Expected ';'. No veo falta un punto y coma en ninguna parte, y no puedo imaginar dónde quiere que coloque uno.

¿Dónde espera un punto y coma y por qué espera un punto y coma allí?

+1

'say (say (" ¡Adiós! "););'? – tftd

+2

También obtiene un error en Firebug: http: // jsfiddle.net/AdHZY/ –

+1

@tftd: Los puntos y coma solo deben aparecer al final de las líneas. Eso causaría un error. –

Respuesta

69

Su problema es el hecho de que i en la función es el carácter Unicode i. Si lo cambia a 'normal' i debería funcionar.

Pero ahora me pregunto cómo el truco :) sacaste un carácter Unicode no: P

unicode error in js

+1

Creo que es [este] (http://en.wikipedia.org/wiki/Dotted_I_ (cirílico)) personaje. –

+0

@Rocket yup es. Char '456'. – PeeHaa

+0

Por curiosidad, ¿cómo hiciste para averiguar exactamente qué pasaba? – Jason

14

Se te ha olvidado la "función" :)

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

say(say("Goodbye!")); 

Ha insertado functіon :)

+0

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

+0

Visualmente, no está mal escrito. Sospecho que como @Rocket sugiere que una de las letras es otro símbolo disfrazado. –

+3

@Rocket no en su caso. Él tiene un personaje que parece normal pero no lo es. Incluso mi IDE se pone rojo con su código :) – tftd

6

He copiado el código en jsFiddle y Chrome también da un error. Eliminé la palabra "función" y volví a escribir "función", y funcionó bien.

Debe tener un carácter adicional allí.

+0

No hay otra explicación que tenga sentido. Demo de volver a escribir la 'función': http://jsfiddle.net/AdHZY/1/ –

6

he copiado y pegado en mi bloc de notas ++ y su mirada código como este en mi bloc de notas ++, vuelva a escribir su palabra clave de función, i se reemplaza por?.

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

¿Quieres decir 'i', no' t', ¿verdad? –

+0

Sí, acabo de cometer un error al escribir y lo siento por eso. Gracias. –

0

Tuve un problema similar y el mismo código de error al depurar el trabajo de otra persona. Para solucionarlo, pegué la sección del código en el Bloc de notas y luego volví a copiarlo en Visual Studio. El error desapareció Creo que quien escribió el código originalmente debe haberlo copiado de alguna parte con algunos caracteres extraños.

0

De hecho, insertó unicode "i" en lugar de "i" normal. puedo obtener los compañeros de errores en VSCode:
',' expected. (1, 29)
',' expected. (2, 10)
Declaration or statement expected. (4, 3)
Usted puede intentar evaluar "functіon" == "function" así:

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

Sin embargo, cuando intento compararlo dibujando "funcionar" yo mismo: devuelve verdadero;

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

Además, no se incluyeron los puntos y comas aquí, en javascript que no son necesarios.

Cuestiones relacionadas