Diferencias V8 y ECMAScript


¿Dónde puedo encontrar una lista de todas las diferencias entre V8 y ECMAScript? Por ejemplo, V8 soporta const, que no es parte del estándar ECMAScript.

Author: T.J. Crowder, 2011-07-29

1 answers

Edit: Direct answer: Track status of ES5 implementations in progress which indicates the V8 googlecode issues tagged es5 o https://github.com/joyent/node/wiki/ECMA-5-Mozilla-Features-Implemented-in-V8

V8 implementa todo ES5 actualmente, aparte de un puñado de casos extremos, y solo entonces con el fin de ser compatible con la mayoría de la forma en que otros navegadores actuales manejan la situación dada.

Porque no vivirá solo casi todo de las diferencias con las que se enfrentará estará en la implementación del entorno host envuelta alrededor de él. Para la mayoría de los usos, estas son las diversas API que proporcionan los navegadores web. Como ejemplo sin navegador, Node.js proporciona API personalizadas para el sistema de archivos y la interacción de red. En términos de lenguaje central, no hay mucho margen de maniobra. Menos el DOM, JavaScript es un lenguaje bastante simple de usar (parte de por qué es tan impresionante) y tiene una especificación realmente específica documento.

ES5 es una iteración hacia arriba de ES3 y casi 100% compatible con versiones anteriores si no se utiliza 'use strict'. Después de casi una década de estancamiento, junto con la incapacidad de obtener un consenso entre los principales implementadores de motores JavaScript, nació ES5 y se limitó principalmente a eliminar y abordar los peores problemas con el lenguaje. El alcance del uso convencional ES5 es extras de matriz, extras de objeto (principalmente Objeto.crear), Función.bind, y modo estricto (que es enteramente acerca de stripping características hacia fuera), y un puñado de ayudantes nativos como construido en JSON y base64.

La mayor parte de esta especificación de 240 páginas se dedica a definir laboriosamente cada detalle sobre el comportamiento que ha existido en JavaScript durante casi 15 años, así como la lista de características que serán obsoletas y eventualmente eliminadas (with, varios usos de eval, etc.).

Harmony (ES6) es el primer gran cambio real que vamos a ver. ES5 logró el objetivo de obtener el motor implementaciones en la misma página y destripando la mayoría de las partes problemáticas de JS. Mirando adelante a ES6, es hora de abordar algunos problemas fundamentales del lenguaje que requieren cambios de sintaxis para solucionarlos. ES6 está programado para finalizar a finales de 2013, pero grandes trozos ya están implementados en los motores JS con el fin de probarlos y ver cómo funcionan en el uso práctico. La web es un ser vivo y la implementación de nuevos estándares no es una cuestión de crear una nueva especificación y luego desencadenarla en el mundo como es la mayoría de las otras industrias. Las ideas flotan y deben pasar por el nivel de implementación (los chicos que escriben V8, Spidermonkey, JSC, Chakra, etc.).) y luego el nivel de usuario real (el usuario en este caso es desarrolladores web que escriben código para ejecutarse en esos motores). El dictado de torre de marfil solo resulta en la falta de uso.

Específicamente en el caso de const: esto actualmente no está exactamente definido por completo. Es una palabra clave con similar pero no exactamente la misma funcionalidad en V8 y Spidermonkey, y tiene un significado similar pero no exactamente el mismo para ES6. Probablemente sea seguro usarlo si espera que el motor de su público objetivo lo soporte actualmente, pero tal como se implementó técnicamente no era parte de ninguna especificación oficial. migración let' andconst'

Más allá de eso, hay "Objetos Host" que están expuestos por el motor dado en el que se está ejecutando un script JS. JavaScript existió primero como una implementación y segundo como una especificación, por lo que hasta hace poco no lo era obvio para los no expertos saber dónde está la línea de buceo. Cuando se ejecuta en un navegador (como suele ser el caso) el Document Object Model se expone como un objeto host para su uso automático. La funcionalidad del DOM se describe en gran medida utilizando IDL y está bajo el ámbito del W3C. La multitud de implementaciones de especificaciones abarcan 6 secciones de nivel superior, casi 50 grupos de trabajo separados y alrededor de 1000 especificaciones separadas. Estas son interfaces expuestas a JavaScript pero completamente desgobernado por los requisitos de cualquier especificación de JavaScript. El DOM abarca un enorme espacio de funcionalidad descrita y de implementaciones continuamente cambiantes de la misma.

 40
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-21 04:22:42