Como sabes, JavaScript tiene todas las palabras clave de Java reservadas. ¿Alguien sabe por qué? JavaScript desalienta el uso de estas palabras clave de Java, pero parecen funcionar bien cuando se usan como identificadores.¿Por qué JavaScript reserva palabras clave Java?
Respuesta
La historia es que cuando estaban desarrollando JavaScript (originalmente llamado Oak I believe (aparentemente, confundí los idiomas con la afirmación anterior acerca de que su nombre original es incorrecto)), Netscape se asoció con Sun para desarrollarlo. Para atraer a la comunidad Java, querían crear JavaScript como Java, para que los desarrolladores de Java se sintieran más cómodos con él, y esa es la razón por la que son tan similares.
Lo que debes recordar sobre el diseño de un lenguaje es que realmente solo tienes una oportunidad para definir palabras clave, sin tener una nueva versión del código existente. Es mucho más fácil reservar una palabra al principio y no usarla que tratar de reservarla más tarde. Esto es especialmente cierto para cosas como JavaScript, donde la persona que desarrolla el script no tiene control sobre en qué navegador se ejecutará (esto sucede ahora, lo sé, pero podría ser mucho peor). ¿Te imaginas lo loco que sería descubrir que la próxima versión de JavaScript que es adoptada por el nuevo navegador de repente no ejecutará tu aplicación, ya que reservaron una nueva palabra clave?
Java (no JS) se llamaba Oak en una etapa temprana. – delnan
EcmaScript 5 strict mode (opt-in) hace que esos nombres sean ilegales como nombres de variables. Es posible que desee comprobar sus scripts para esos nombres de todos modos, para que pueda aprovechar el modo estricto. – Neil
@Neil, eso es cierto, pero el problema es que en realidad nada usa el modo estricto. Puede verificarlo con algo como JSLint, pero no puede confiar en un navegador moderno para aplicar las reglas estrictas para usted. – kemiller2002
Probablemente para evitar posibles confusiones que podrían causar el uso de estas palabras clave como nombres de variables.
Quiero decir, imaginemos que un desarrollador de Java intenta descubrir un fragmento de código JavaScript con una variable o una función llamada public
.
Incluso cuando eso sea posible, recomendaría no hacerlo, por razones de claridad.
Es de suponer que los desarrolladores de JavaScript supusieron que estas palabras pueden usarse para una funcionalidad adicional en una versión futura de JavaScript. Para evitar problemas de compatibilidad con versiones anteriores, estas palabras fueron marcadas preventivamente como reservadas.
Bueno, en realidad no se trata de palabras clave de Java, ya que Javascript no tiene nada que ver con Java, excepto que toma prestado el nombre.
Los nombres se reservaron en caso de que fueran necesarios en futuras expansiones del idioma. Desde el ECMAScript Language Specification:
"Las siguientes palabras se utilizan como palabras clave en ampliaciones propuestas y por lo tanto son reservada para permitir la posibilidad de una futura adopción de esas extensiones ..."
- 1. javaScript palabras clave reservadas
- 2. Java Palabras clave como
- 3. ¿Por qué Clojure tiene "palabras clave" además de "símbolos"?
- 4. ¿Por qué VB tiene más palabras clave LINQ que C#?
- 5. ¿Por qué debería capitalizar mis palabras clave SQL?
- 6. Modificador Orden de palabras clave en Java
- 7. En Java, ¿por qué tener un bloque de código sin palabras clave, solo llaves
- 8. Palabras clave "nativas" y "literales"
- 9. ¿Por qué mi programa Winforms reserva tanta memoria virtual?
- 10. La lanza de palabras clave de excepciones en Java
- 11. Palabras clave de Java no permitidas como identificadores EL
- 12. Palabras clave reservadas - ¿Ocultas? JNLP
- 13. C# Linq ¿Palabras clave?
- 14. ¿palabras clave SQL estándar?
- 15. C# var uso de palabras clave
- 16. Modelos con palabras clave reservadas
- 17. Palabras reservadas en Java
- 18. Búsqueda por palabras clave (OR, Y) en Lucene
- 19. PHP - y/o palabras clave
- 20. argumentos de palabras clave Clojure
- 21. C# - Desactivar palabras clave dinámicas
- 22. ¿Por qué VIM resalta algunas palabras?
- 23. ¿Por qué palabra clave "paquete" y .h?
- 24. Cómo usar palabras clave personalizadas en SVN
- 25. ¿Por qué es el 'esto' no de palabras clave de un tipo de referencia en C++
- 26. ¿Por qué usar palabras clave o símbolos como funciones para buscar valores desde mapas funciona?
- 27. ¿Por qué los nombres de atributos no son palabras clave de Python?
- 28. Lee las líneas entre dos palabras clave
- 29. Seleccione una nueva combinación de palabras clave
- 30. Scala con el uso de palabras clave
I cree que fue parte de la especificación ECMAScript no permitir el uso de esas palabras clave. – drudge
Tenga en cuenta que las únicas personas que realmente conocen la respuesta son los autores originales de JavaScript. Todo lo demás que podemos hacer aquí es especular. –
JavaScript es anterior a la existencia de la especificación ECMAScript. ¿Estaban estas palabras reservadas presentes antes? (No sé ...) –