javascript - tutorial - title html




¿Por qué el JavaScript necesita comenzar con ";"? (2)

Considera este ejemplo:

function a() {
  /* this is my function a */
}
a()
(function() {
  /* This is my closure */
})()

Lo que sucederá es que será evaluado así:

function a() {
  /* this is my function a */
}
a()(function() {})()

Por lo tanto, lo que sea que se devuelva se tratará como una función que se intentará inicializar.

Esto se debe principalmente a evitar errores al intentar reunir múltiples archivos en un solo archivo:

a.js

function a() {
  /* this is my function a */
}
a()

b.js

(function() {
  /* This is my closure */
})()

Si concat estos archivos juntos causará problemas.

Así que por lo tanto recuerda poner tu ; delante de ( y quizás también en algunos otros lugares. Por cierto. var a = 1;;;var b = 2;;;;;;;;;var c = a+b; es perfectamente válido JavaScript

Recientemente he notado que muchos archivos JavaScript en la Web comienzan con un ; Inmediatamente después de la sección de comentarios.

Por ejemplo, el código de este plugin jQuery comienza con:

/**
 * jQuery.ScrollTo
 * Copyright (c) 2007-2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
 * Dual licensed under MIT and GPL.
 * Date: 9/11/2008                                      
 .... skipping several lines for brevity...
 *
 * @desc Scroll on both axes, to different values
 * @example $('div').scrollTo( { top: 300, left:'+=200' }, { axis:'xy', offset:-20 } );
 */
;(function( $ ){

¿Por qué el archivo debe comenzar con un ; ? También veo esta convención en los archivos JavaScript del lado del servidor.

¿Cuáles son las ventajas y desventajas de hacer esto?


Creo (aunque no estoy seguro, así que, por favor, no se lance sobre mí) que esto garantizaría que cualquier declaración anterior de un archivo diferente se cierre. En el peor de los casos, esto sería una declaración vacía, pero en el mejor de los casos, podría evitar intentar localizar un error en este archivo cuando la declaración sin terminar provenga de arriba.





serverside-javascript