La principal desventaja de JavaScript es que carece de los mecanismos de seguridad incorporados de otros lenguajes más robustos, por ejemplo, verificación de tipos, interfaces explícitas, encapsulación.
Alguien lo suficientemente familiarizado con el lenguaje a veces puede solucionar estas debilidades pero a menudo solo de forma limitada o saltando a través de aros con torpeza. Las bibliotecas también pueden ayudar a compensar; sin embargo, no son apropiadamente “JavaScript” pero las soluciones de terceros (aunque sofisticadas) a las deficiencias del idioma nativo. Una evaluación justa de JavaScript en sí mismo debería ignorarlos.
A cambio de esta pérdida de seguridad, JavaScript ofrece mayor flexibilidad y mayor velocidad de desarrollo. Se necesita una gran cantidad de tiempo adicional para definir una interfaz para cada tipo, para deletrear la firma completa de cada método, o para definir una clase completa para solo un pequeño objeto de parámetro o función cuya vida útil termina casi tan pronto como sea posible. comienza Por lo tanto, la fuente de la mayor debilidad de JavaScript es también la fuente de su mayor fortaleza: libera a los desarrolladores de estas restricciones .
Desafortunadamente, en manos de desarrolladores ingenuos o indisciplinados, este aumento de la flexibilidad conduce a la falta de cuidado, a la negligencia y, en última instancia, a una disminución de la flexibilidad y la velocidad de desarrollo a largo plazo . A los subtipos se les dan interfaces inconsistentes, los objetos se parchean misteriosamente de mono, el estado se muta en todas partes y por todos, y muy pronto nadie tiene idea de qué hace qué o para qué lo hacen.
- ¿Qué hizo que los franceses odiaran a los Estados Unidos?
- ¿Cómo puedo dejar de odiar mi vida dado que no puedo cambiarlos mucho?
- ¿Ravana y su familia odiaban a Vishnu?
- ¿Cómo te mueves, personalmente, frustrado, enfadado, malo, viendo el mundo con pocas opciones, a una mentalidad de aceptación, pacífica, amable con posibilidades ilimitadas?
- ¿Es necesario que un indio odie a Pakistán para demostrar su nacionalismo?
Pero un desarrollador entusiasta mitiga estos riesgos con su propia perspectiva. Él sabe cuándo está tomando libertades excesivas y puede sobrevivir sin que un compilador controle cada uno de sus movimientos. Si ese desarrollador también es disciplinado, entonces se apoya en herramientas de terceros, protege su código con pruebas de unidad y se detiene antes de cometer delitos atroces.