2009-02-28 9 views
5

Usando la pequeña función Diggit/Blog de Stackoverflow describe here:- Recursos

me gustaría publicar el siguiente video Google charla técnica que acabo de sierra y que me pareció bastante interesante.

Siempre he tenido problemas para entender javascript "naturaleza".

Aquí, el JavaScript good parts se describen por Douglas Crockford

espero que encuentre útil este enlace.

Ahora la parte pregunta:

¿Cuáles son sus quejas acerca de JavaScript? ¿Utiliza un IDE para editar JavaScript? ¿Cree que este video ayuda a entender las "partes buenas"?

Respuesta

17

JavaScript: las partes malas.

  1. El mayor error es la detección tardía de errores. JavaScript le permitirá acceder a un miembro de objeto inexistente, o pasar una cantidad incorrecta de argumentos a una función y llenar el espacio con objetos 'indefinidos', que a menos que los compruebe deliberadamente (lo que no es práctico hacer en todas partes).), causará una excepción o generará un valor inesperado más adelante. Posiblemente mucho más tarde, lo que resulta en errores sutiles y difíciles de depurar que aparecen en ninguna parte cerca del código del problema real. Estas condiciones deberían haber generado excepciones, excepto que JS originalmente no tenía excepciones para plantear. 'Undefined' fue un hack rápido y sucio con el que estamos ahora atrapados.

  2. Variables no declaradas con defecto en alcance global. Esto casi nunca es lo que quiere y puede causar errores sutiles y difíciles de depurar cuando dos funciones olvidan 'var' y comienzan a tirar el mismo global.

  3. El modelo de funciones de constructor es extraño incluso para un lenguaje OO basado en prototipos y confunde incluso a usuarios experimentados. Olvidar 'nuevo' puede resultar en errores sutiles y difíciles de eliminar. Mientras que puede crear un sistema pasable de clase/instancia, no hay un estándar, y la mayoría de los sistemas de clase propuestos en los primeros tutoriales que las personas todavía usan son desesperadamente inadecuados y oscurecen lo que JavaScript realmente está haciendo.

  4. Falta de métodos enlazados. Es absolutamente poco intuitivo que acceder a "object.method" cuando lo llama hace una conexión mágica con 'object' en 'this', pero pasar "object.method" como referencia pierde la conexión; ningún otro idioma funciona de esta manera. Cuando esto sucede, 'esto' se establece en un valor inesperado, pero no está 'indefinido' o algo más que genere una excepción. En cambio, todo el acceso a la propiedad termina en 'ventana', lo que provoca errores sutiles y difíciles de depurar más tarde.

  5. No hay un tipo entero. El número se parece a uno, pero se descompone de varias maneras (por ejemplo, n + 1 == n para lo suficientemente alto n). Cada vez que un NaN o Infinity se cuela (bastante inesperadamente si crees que estás tratando con números enteros) no lo descubrirás de inmediato; en cambio, habrá errores sutiles y difíciles de depurar en el futuro.

  6. No hay ningún tipo de matriz asociativa. Object se parece a uno, pero se descompone bajo varias teclas inesperadas. Las matrices no son listas puras. Cada vez que utilizas 'for ... in', probablemente has caído en una trampa y experimentarás ... sí, errores sutiles y difíciles de depurar.

  7. Manejo de cadenas generalmente deficiente, al menos para un lenguaje de scripting. String.split (, limit) y String.replace() no hacen lo que podrías pensar, causando ... ya sabes. Los resultados de toString() son generalmente deficientes y no son útiles para la depuración. Mientras tanto, estamos atrapados con una carga de basura que Netscape pensó que podría ser útil, como String.prototype.blink(), y el escape constantemente roto(). Hurra.

  8. Y entonces no todas las diferencias del navegador (es decir, todavía no se encuentra una gran cantidad de métodos esenciales de los objetos básicos), y el DOM ...

  9. Y, por último, incluso cuando se produce una excepción hace , está escondido de la vista, por lo que el autor ni siquiera se dará cuenta de que algo está mal. El resultado es que la mayoría de los sitios están repletos de errores; activa el informe de errores de JavaScript completo en IE y el resultado no se puede usar.

Me asusta pensar que una nueva generación de programadores esté aprendiendo este tosh como primer idioma. Lo que es peor, la mayor parte del material del tutorial del que están aprendiendo ("Mi primer amigo R0LL0VERZ!") Invariablemente alienta la peor práctica posible. 'Javascript:' URLs, 'eval()' para todo, acceso DOM específico del navegador ... oy.

+0

+1 por mencionar default a globales :-) – bandi

+0

Mejor que aprender C, o básico como primer idioma. – Breton

1

La parte difícil de JavaScript, en mi opinión, es:

  1. el desarrollo del navegador de la Cruz/depuración emite
  2. cuestiones
  3. entre navegadores DOM/modelo (la propagación de eventos, etc ...)
  4. La falta de "clases" (subjetivas)
  5. falta de un buen soporte de depuración sólida en los navegadores

Firebug ayuda mucho para Firefox, pero no he encontrado nada tan bueno para IE, y el mero hecho de que uno tiene que hacerlo es difícil.

Por el lado positivo, si construyes un script desde cero y entiendes cada paso, puede ser realmente divertido y poderoso.

+0

Hay muchas implementaciones de clases en JS, si te gusta este tipo de cosas. Me gusta la herencia prototípica yo mismo. – Zach

1

Mi mayor queja al usar JavaScript son los enlaces DOM, pero esos no son realmente el error de JavaScript sino que cada navegador lo implementa a su manera. En esa línea, IE es el peor delincuente.

En términos de cuestiones de JavaScript puro, todavía no entiendo completamente prototipos de una manera que me permita usar toda su potencia; pero eso es menos una queja que mi propia falla personal. Como lenguaje me gusta mucho JavaScript, y cualquier queja que tengo se ve ensombrecida por su interacción con el DOM.

Uso Firefox + Firebug intensivamente para mi codificación y depuración principal. Hay depuradores en Opera y Safari que uso si alguno de los navegadores tiene problemas particulares. Que Dios me ayude cuando necesito depurar IE.

código en cualquier editor de texto disponible y tiene resaltado de sintaxis. Tiendo a usar el framework YUI, pero es solo porque lo sé de la mejor manera; Espero algún día aprender más sobre otros marcos y decidir cuál sería el mejor para los proyectos personales.

Aunque no he visto el video, acabo de leer "The Good Parts" esta semana. Si el video se parece al libro, será muy útil. El libro en sí es genial porque es conciso e informativo. Entra en un nivel de discusión lingüística que no se ve con suficiente frecuencia cuando se busca información en Google, que permite una mejor comprensión del lenguaje en general.

0

Me gusta mucho la creación de prototipos, se siente mucho más potente que las clases normales.