2011-01-31 17 views
5

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?

+0

I cree que fue parte de la especificación ECMAScript no permitir el uso de esas palabras clave. – drudge

+2

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. –

+1

JavaScript es anterior a la existencia de la especificación ECMAScript. ¿Estaban estas palabras reservadas presentes antes? (No sé ...) –

Respuesta

4

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?

+1

Java (no JS) se llamaba Oak en una etapa temprana. – delnan

+0

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

+0

@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

3

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.

3

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.

4

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 ..."

Cuestiones relacionadas