español ejemplos descargar definicion curso caracteristicas javascript

javascript - ejemplos - ¿Cuál es el propósito de estas llaves superfluas?



javascript html (5)

¿O tal vez es una separación lógica de código para ayudar al desarrollador?

Voy a hacer 2 suposiciones aquí:

  1. el desarrollador no era incompetente
  2. dejaste fuera muchas líneas entre los rizos

(Si 1 no es cierto, entonces todas las apuestas están apagadas)

Los bloques de llaves no tienen ningún propósito: en varios editores de texto marcan secciones que pueden colapsarse y, por lo tanto, eliminarse de la vista. A menudo hago esto si tengo más de 50 líneas que sé que funcionan pero tengo que desplazarme constantemente hacia el pasado. Coloque los rizos alrededor del contenido (tenga en cuenta el anidamiento), haga clic en el icono "contraer / plegar" en el canalón -> el código desaparece. Mi editor en particular recordará los bloques plegados, por lo que no tengo que plegarlos cada vez.

Así que recientemente empecé en un nuevo lugar de trabajo y me encontré con un formato de JavaScript que me hace cuestionar su propósito. (en particular los corchetes {})

var _occurrences = getOccurrences($(''#ddlTours'').val()); { var _occurrence = getObjectByValue(_occurrences, ''tourID'', booking.tourID); { _occurrenceID = _occurrence.occurrenceID; } }

Para mí, casi parece un intento de construcción de objetos. es decir

var _occurrences : // Ignoring = getOccurrences($(''#ddlTours'').val()); { _occurrence : // Ignoring getObjectByValue(_occurrences, ''tourID'', booking.tourID); { _occurrenceID : _occurrence.occurrenceID; } }

Pero como entiendo lo ejecutará así.

var _occurrences = getOccurrences($(''#ddlTours'').val()); var _occurrence = getObjectByValue(_occurrences, ''tourID'', booking.tourID); _occurrenceID = _occurrence.occurrenceID;

¿O es así que _urrentence se borra y no se sienta como encapsulado y asignamos una var fuera de la encapsulación? ¿Funciona realmente como una mejora del rendimiento? es decir

Global var a = 1 { b = someFunction() // After execution because of encapsulation it poofs??? for(var c in b) { a += c.somefunction() } }

Otra opción es que es simplemente un código malo?

¿O tal vez es una separación lógica de código para ayudar al desarrollador?

Me preguntaba si alguien podría arrojar algo de luz sobre esto para mí :)


Ver el código con vista compilador.

Los corchetes son solo para definir el alcance. No más más.

Considera, aquí hay un ejemplo.

for(var c in b) { a += c.somefunction(); }

Este código es similar a

for(var c in b) a += c.somefunction();

es decir, por defecto para el bucle tiene alcance hasta la siguiente declaración.

Similar,

var _occurrences = getOccurrences($(''#ddlTours'').val()); { var _occurrence = getObjectByValue(_occurrences, ''tourID'', booking.tourID); { _occurrenceID = _occurrence.occurrenceID; } }

Esto es solo definir el alcance y agregar declaraciones dentro de ese alcance. Si bien declara una variable en ese ámbito, el concepto de elevación elevará todas las variables hacia arriba.

Declarar una variable dentro de un alcance es como

if(true){ var _occurrence = getObjectByValue(_occurrences, ''tourID'', booking.tourID); }

.

En palabras simples,

var _occurrences = getOccurrences($(''#ddlTours'').val()); { var _occurrence = getObjectByValue(_occurrences, ''tourID'', booking.tourID); { _occurrenceID = _occurrence.occurrenceID; } }

es igual a:

var _occurrences = getOccurrences($(''#ddlTours'').val()); if(true){ var _occurrence = getObjectByValue(_occurrences, ''tourID'', booking.tourID); if(true){ _occurrenceID = _occurrence.occurrenceID; } }


Estas llaves son solo para hacer que el código sea más legible, eso es lo que piensan algunos programadores. Las llaves no tienen nada que ver con ningún otro tipo de funcionalidad. La gente hace código cableado. Saludos por una nueva experiencia un poco. :-PAG


Por lo que puedo decir, las llaves son solo una sugerencia para el desarrollador que está leyendo el código.

Supongo que las llaves y el anidamiento solo sirven para ilustrar que la lista contiene un elemento que contiene una identificación. Esto podría estar destinado a ayudar al lector a comprender que si editan cualquiera de ese código o lo mueven, también editan el código interno para que coincida.


Tienes razón al cuestionar esas llaves. Ellos no hacen nada en absoluto. El código dentro de las llaves se ejecuta de la misma manera que lo haría si las llaves no estuvieran allí. Es claramente un error tenerlos allí así.

Como mencionaste, parece que alguien podría haber pensado que las llaves podrían introducir un alcance de bloque, lo que quizás haga que una variable quede fuera del alcance después de que se cierren las llaves. ¡Pero JavaScript no tiene un ámbito de bloqueo para variables var ! (Tiene un margen de bloqueo para let , pero solo en los motores de JavaScript más nuevos que admiten let ).

O tal vez solo pensaron que sería una buena manera de documentar dónde se utilizan las variables. No es.

Agregando al humor aquí, el código parece faltar completamente la var para _occurrenceID , por lo que es probable que esté creando una variable global involuntariamente.

La forma en que reescribió el código sin las llaves es de hecho cómo se ejecutará realmente. Es una mejor representación de lo que realmente hace el código y es cómo se debe escribir el código. (Arreglando la var faltante por supuesto ...)