60 votos

¿Cuál es la diferencia entre el punto y coma en JavaScript y Python?

Python y JavaScript permiten a los desarrolladores a usar o a omitir puntos y comas. Sin embargo, a menudo he visto (en libros y blogs) sugirió que no debería usar punto y coma en Python, mientras que siempre debo usarlos en JavaScript.

¿Hay una diferencia técnica entre cómo los idiomas usan punto y coma o esto es solo una diferencia cultural?

69voto

NullUserException Puntos 42268

El punto y coma en Python son totalmente opcionales (a menos que usted quiere tener varias instrucciones en una sola línea, por supuesto). Yo personalmente creo que el código de Python con punto y coma al final de cada afirmación se ve muy feo.

Ahora en Javascript, si usted no escribe un punto y coma, uno se inserta automáticamente1 al final de la línea. Y esto puede causar problemas. Considerar:

function add(a, b) {
  return
    a + b
}

Usted pensaría que esto devuelve a + b, pero Javascript acaba de ser más astuto que usted y ve esto como:

function add() {
  return;
    a + b;
}

Volviendo undefined lugar.

1 Consulte la página 27, punto de 7,9 Automático de punto y Coma de Inserción en la Especificación del Lenguaje ECMAScript para obtener más detalles y advertencias.

66voto

Jeremy Banks Puntos 32470

Esto me había confundido durante mucho tiempo. Yo pensé que se trataba de una diferencia cultural, y que todo el mundo quejándose de punto y coma de inserción es la peor característica en que el idioma era un idiota. El tan repetido ejemplo de NullUserException la respuesta no me sacudan porque, prescindiendo de la sangría, Python se comporta de la misma como JavaScript en ese caso.

Entonces, un día, escribí algo vagamente parecido a esto:

alert(2)
(x = $("#foo")).detach()

Yo esperaba que se interpreta de la siguiente manera:

alert(2);
(x = $("#foo")).detach();

En realidad, fue interpretada de la siguiente manera:

alert(2)(x = $("#foo")).detach();

Yo ahora uso de punto y coma.

JavaScript sólo1 de tratar un salto de línea como un punto y coma en los siguientes casos:

  • Es un error de sintaxis no.
  • La nueva línea está entre los throw o return de palabras clave y una expresión.
  • La nueva línea está entre los continue o break de palabras clave y un identificador.
  • La nueva línea está entre una variable y una postfix ++ o -- operador.

Esto deja a casos como este donde el comportamiento no es lo que usted esperaría. Algunas personas2 han adoptado convenios que sólo utilice punto y coma donde sea necesario. Prefiero seguir la convención estándar de siempre con ellos, ahora que sé que no es inútil.


1 he omitido algunos detalles menores, consulte con ECMA-262 5e Sección 7.9 para la descripción exacta.
2Twitter Bootstrap es un ejemplo de alto nivel.

7voto

cdarke Puntos 8020

Aparte de las cuestiones sintácticas, es en parte cultural. En la cultura de Python cualquier extraños personajes son un anatema y aquellos que no son espacios en blanco o alfanumérico, doble.

Así las cosas principales signos $, punto y coma y llaves, no son gustó. Lo que haces en tu código, depende de ti, pero para realmente entender una lengua no es suficiente aprender la sintaxis.

7voto

lbruder Puntos 1834

JavaScript está diseñado para "mirar como C", así que punto y coma es parte de la cultura. Sintaxis de Python es suficientemente diferentes como para no sentir los programadores incómodo si los puntos y comas "faltantes".

6voto

hamstergene Puntos 14041

La respuesta de por qué no ver en el código de Python es: nadie los necesita, y el código es más limpio sin ellos.

Generalmente hablando, el punto y coma es sólo una tradición. Muchos de los nuevos lenguajes tienen que acaba de dejar para siempre (tomar Python, Ruby, Scala, Vaya, Groovy, Io por ejemplo). Los programadores no necesitan, ni compiladores. Si un lenguaje que le permite no escriba un carácter extra que nunca se necesita, usted querrá tomar ventaja de eso, no?

Es sólo que de JavaScript en el intento de quitar de ellos no fue muy exitosa, y que muchos prefieren la convención para siempre el uso de ellos, ya que hace el código de menos ambiguo.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X