2012-02-14 48 views
28

estoy haciendo algo de FF complemento desarrollo y que estoy viendo una sintaxis como esta:¿Qué es esta sintaxis de JavaScript: {Ci, CC}?

var {Cc, Ci} = require('chrome'); 

Simplemente curioso lo que la sintaxis es y si es especial para el desarrollo de FF o alguna otra cosa.

+0

¿Cómo puedo evitar que sea aparecer como error en Visual Studio + ReSharper? Como no se reconoce como la sintaxis natural de javascript, ReSharper sigue mostrándolo como un error de sintaxis y no puede volver a formatear el documento. –

+0

¿Cómo se marcó esta pregunta * anterior * como un engaño de lo mismo que se preguntó en 2013? – ruffin

Respuesta

8

Consulte la respuesta de Domenic sobre cuál es la sintaxis que se denomina asignación de desestructuración. La respuesta que sigue es por qué esto es necesario para el desarrollo de complementos de FF.

Hay un debate sobre qué es esto y por qué es necesario en http://groups.google.com/group/mozilla-labs-jetpack/browse_thread/thread/d288b79903b5b434.

La respuesta breve es sí, es específica para el desarrollo de complementos de Firefox. La documentación relevante se puede encontrar en https://addons.mozilla.org/en-US/developers/docs/sdk/1.3/dev-guide/module-development/chrome.html.

+5

Respuesta incorrecta. Es la sintaxis de ECMA 6, y solo porque Firefox es el primer navegador que implementa asignaciones de desestructuración no significa que solo sea relevante para el desarrollo de complementos de FIrefox. –

+2

Creo que respondí la pregunta incorrecta: pensé que estaban preguntando por qué ahora necesitas 'require ('chrome')' para los complementos de FF. Lamentablemente, la respuesta fue aceptada y, por lo tanto, no puedo eliminarla. – Bill

+0

¡Ah, lo tengo! Pensé que era bastante obvio que la sintaxis '{...} =' es lo raro aquí, ya que 'require ('...')' es una llamada a función simple. Pero la pregunta no es inequívoca, ¡tienes razón! –

25

Esto se llama asignación de desestructuración. Es una característica de JavaScript 1.7, donde en este contexto "JavaScript" hace referencia a las extensiones específicas de Mozilla para el estándar ECMAScript.

Está programado para inclusion in the next version of JavaScript.

El equivalente de código ECMAScript 5 sería

var __temp = require('chrome'); 
var Cc = __temp.Cc; 
var Ci = __temp.Ci; 
+0

Muchas gracias, finalmente me deshice del error de sintaxis en mi editor y mi código está siendo evaluado de nuevo. – razzak

+0

¿Pero realmente causa que una variable '__temp' aparezca? Si no, entonces la equivalencia es solo aproximada. – hippietrail