2011-02-04 9 views
11

Ho letto sul continuo sviluppo di Mozilla di JavaScript, fino alla versione 1.8.5: https://developer.mozilla.org/en/JavaScript.Qual è la correlazione tra ECMAScript 5 e JavaScript 1.8.5 in termini di funzionalità linguistiche?

La mia domanda è: qual è la correlazione tra JavaScript 1.8.5+ e ECMAScript 5+ in termini di funzionalità del linguaggio? Qualche possibilità che le nuove funzionalità JavaScript di Mozilla (come i generatori, la comprensione degli array, ecc.) Diventino parte di ECMAScript?

voglio solo ottenere una maniglia su se vale la pena di apprendimento JavaScript 1.8.5 caratteristiche (e lavorare per loro spessorare nei browser non supportano) o se devo dimenticare JS 1.8.5 e concentrarsi su di apprendimento/spessori il nuovo Funzioni di ECMAScript 5.

FYI: Mozilla parla di come hanno intenzione di portare JavaScript in conformità a ECMAScript 5 qui: https://developer.mozilla.org/En/JavaScript/ECMAScript_5_support_in_Mozilla

+3

io per primo non voglio il pythonisation quel mozilla sta portando. – Raynos

+1

La mia grande domanda è quando Javascript sarà finalmente in grado di gestire Unicode nelle sue regex, almeno fino a [Conformità al Livello 1 con UTS n. 18: "Supporto Unicode di base"] (http://unicode.org/reports/ TR18/# Basic_Unicode_Support). È inutile nel mondo post-ASCII di oggi senza di esso. – tchrist

+0

Neanche io, penso che alcune delle funzionalità siano interessanti, ma è eccessivo, la pitonizzazione è un buon modo per dirla. L'unica cosa che voglio è la possibilità di dichiarare i tipi se scelgo di scrivere (come ActionScript) –

risposta

12

JavaScript 1.8.5 è l'implementazione di ECMAScript di Mozilla con funzionalità aggiuntive. È un superset delle specifiche ECMAScript (e delle attuali implementazioni come IE, Chrome e Opera). Mozilla spinge per le funzionalità che aggiunge al proprio browser, possono o meno farlo in ECMA. Nota che Mozilla è un membro del W3C e ha qualche parola in capitolo, ma suppongo che la maggior parte delle funzionalità non ce la farà.

Bottom Line Non utilizzare a meno che non si sta codifica qualcosa di specifico per Firefox, estensioni FF, applicazioni XUL, Rhino (Aggiunto Rhino grazie a @Raynos)

+1

Oppure Rhino! O qualsiasi altra cosa che gira sull'interprete JavaScript di Mozilla. – Raynos

+0

È bello. In realtà pensavo che Rhino fosse bloccato con una versione molto più vecchia di JavaScript, ma sì, puoi anche scegliere la versione da utilizzare, supporta fino a 1.7 attualmente https://developer.mozilla.org/en/Rhino_Shell –

+0

Grazie per la semplice risposta. –

0

Penso ECMAScript è lo "standard", come un progetto, e JavaScript è il linguaggio reale è basato su. Un po 'come il modo in cui w3c ha i propri standard e quindi le persone fanno (o no) rendere i motori di rendering basati su di esso.

Quindi sostanzialmente per rispondere alla tua domanda, guarda ECMAScript per vedere quale sia il consenso, come javascript è "supposto" funzionare, ma dovresti concentrarti su javascript, perché è quello con cui ti stai effettivamente codificando.

3

Concentrarsi in modo provocatorio su ES5. Il problema con le funzionalità 1.7 & 1.8 è che cambiano la sintassi della lingua in modo da non poterle inserire in altro codice.

È possibile emulare tutte le proprietà dell'oggetto con ES5 ma non è possibile emulare la parola chiave let. In altri browser le varie espressioni non sono javascript validi.

È necessario distinguere tra fare aggiunta al codice nativo che è ciò che la maggior parte di ES5 sta facendo e modificando la sintassi di javascript che è ciò che sta facendo 1.7 & 1.8.

Vi è un uso per 1.7 & 1.8 che deve essere sviluppato per la piattaforma RHINO. Ma per il browser javascript attenersi alle specifiche.

Ammettiamo che i ritorni multipli sono una caratteristica molto carina. Avere un incarico serie del genere sarebbe bello

function() f { 
    return [1,2,3]; 
} 

[a,b,c] = f() 

Ma le altre caratteristiche sono molto importanti modifiche alla sintassi e basta non possono far passare ECMAScript solo che non si occuperà con esso. Piccole modifiche come sopra potresti essere in grado di entrare in ES6 ma dovrai aspettare almeno un anno.

Quindi realisticamente non ci si aspetta che l'apprendimento si ripaga per un anno o due se non del tutto. Molto probabilmente non pagherà. Guarda librerie come underscore.js che possono definire per te metodi di utilità funzionali comuni.

+0

Le sue regex hanno ancora il supporto Unicode di base per UTS # 18 ?? – tchrist

+0

È possibile modificare la sintassi della lingua, introducendo un parser/generatore che compila il codice al normale JavaScript. Vedi CoffeeScript - http://jashkenas.github.com/coffee-script/. Questo sarebbe un valido (anche se molto dispendioso) metodo di shimming del supporto JS 1.8.5. –

+0

@tchrist Non ne ho idea. – Raynos

Problemi correlati