Así que recientemente comencé 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 según tengo entendido, lo ejecutará como.
var _occurrences = getOccurrences($('#ddlTours').val()); var _occurrence = getObjectByValue(_occurrences, 'tourID', booking.tourID); _occurrenceID = _occurrence.occurrenceID;¿O es que _occurrence se elimina y no se sienta como si estuviera encapsulado y asignamos una var que está fuera de la encapsulación? ¿Eso realmente funciona 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 solo un código incorrecto?
¿O tal vez se entiende como 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í :)
Tienes razón al cuestionar esas llaves. No hacen nada en absoluto. El código dentro de las llaves se ejecuta igual que si no estuvieran las llaves. Claramente es un error tenerlos ahí así.
Como mencionaste, parece que alguien podría haber pensado que las llaves introducirían un alcance de bloque, lo que quizás provocaría que una variable quedara fuera del alcance después de cerrar las llaves. ¡Pero JavaScript no tiene alcance de bloque para variables var ! (Tiene alcance de bloque para let , pero solo en los motores de JavaScript más nuevos que admiten let ).
O tal vez simplemente pensaron que sería una buena manera de documentar dónde se usan las variables. No es.
Además del humor aquí, parece que al código le falta la var para _occurrenceID por completo, ¡así que probablemente esté creando una variable global sin querer!
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...)
¿O tal vez se entiende como una separación lógica de código para ayudar al desarrollador?
Voy a hacer 2 suposiciones aquí:
(si 1 no es cierto, todas las apuestas están canceladas)
Los bloques de corchetes que no hacen nada tienen un propósito: en varios editores de texto, marcan secciones que se pueden colapsar y, por lo tanto, eliminar de la vista. A menudo hago esto si tengo más de 50 líneas que sé que funcionan, pero tengo que desplazarme constantemente. Coloque rizos alrededor del contenido (tenga cuidado con el anidamiento), haga clic en el ícono "contraer/doblar" en el canal -> el código desaparece. Mi editor en particular recordará los bloques doblados, así que no necesito volver a doblarlos cada vez.
Por lo que puedo decir, las llaves son solo una pista para el desarrollador que está leyendo el código.
Supongo que las llaves y el anidamiento son solo para ilustrar que la lista contiene un elemento que contiene una identificación. Esto podría tener la intención de ayudar al lector a comprender que si editan parte de ese código, o lo mueven, también editan el código interno para que coincida.