2012-02-14 12 views
28

robię jakiś FF dodatek na rozwój i widzę składnię tak:Co to jest ta składnia JavaScript: {Ci, CC}?

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

prostu ciekawi co to jest składnia i jeśli jest to szczególny do rozwoju FF lub coś innego.

+0

Jak mogę zapobiec będzie wyglądać błędu w Visual Studio + ReSharper? Ponieważ nie jest rozpoznawana jako naturalna składnia javascript, ReSharper pokazuje ją jako błąd składni i nie może ponownie sformatować dokumentu. –

+0

W jaki sposób to * wcześniejsze * pytanie zostało oznaczone jako duplikacja tego samego zapytania w 2013 roku? – ruffin

Odpowiedz

8

Zobacz odpowiedź Domenica na temat składni, którą nazywa się zadaniem destrukturyzacji. Odpowiedź brzmi: dlaczego jest to potrzebne do rozwoju dodatków FF.

Dyskusja na temat tego, co to jest i dlaczego jest potrzebna pod numerem http://groups.google.com/group/mozilla-labs-jetpack/browse_thread/thread/d288b79903b5b434.

Krótka odpowiedź brzmi: tak, jest specyficzna dla rozwoju dodatków do Firefoksa. Odpowiednią dokumentację można znaleźć pod adresem https://addons.mozilla.org/en-US/developers/docs/sdk/1.3/dev-guide/module-development/chrome.html.

+5

Zła odpowiedź. Jest to składnia ECMA 6 i tylko dlatego, że Firefox jest pierwszą przeglądarką implementującą zadania destrukturyzacji, nie oznacza to, że jest ona istotna tylko dla rozwoju addonów FIrefox. –

+2

Myślę, że odpowiedziałem na niewłaściwe pytanie - myślałem, że pytają, dlaczego teraz trzeba "wymagać (" chrome ")' dla dodatków FF. Niestety odpowiedź została przyjęta i nie mogę jej usunąć. – Bill

+0

Ah, rozumiem! Pomyślałem, że to dość oczywiste, że składnia '{...} =' jest dziwną rzeczą, ponieważ 'require ('...')' jest prostym wywołaniem funkcji. Ale pytanie nie jest jednoznaczne, masz rację! –

25

Nazywa się to przypisaniem destrukturyzacji. Jest to funkcja z JavaScript 1.7, gdzie w tym kontekście "JavaScript" odnosi się do określonych rozszerzeń Mozilli do standardu ECMAScript. Jest to planowane na inclusion in the next version of JavaScript.

Równowartość kod ECMAScript 5 byłoby

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

Dzięki za tonę, w końcu pozbyłem się błędu składni w moim edytorze i mój kod jest oceniany ponownie. – razzak

+0

Ale czy rzeczywiście powoduje powstanie zmiennej '__temp'? Jeśli nie, to równoważność jest tylko trudna. – hippietrail

Powiązane problemy