sto leggendo il MDN javascript reference, di conseguenza il seguente codice non restituisce più false
:Qual è lo scopo di consentire nomi di proprietà duplicati?
function haveES6DuplicatePropertySemantics(){
"use strict";
try {
({ prop: 1, prop: 2 });
// No error thrown, duplicate property names allowed in strict mode
return true;
} catch (e) {
// Error thrown, duplicates prohibited in strict mode
return false;
}
}
In ECMAScript 5 strict mode code, duplicate property names were considered a SyntaxError. With the introduction of computed property names making duplication possible at runtime, ECMAScript 6 has removed this restriction.
La mia domanda è, quali sono i vantaggi pratici di permettere struttura a nomi duplicati nei inizializzatori? Posso vedere come, quando le proprietà dell'oggetto vengono assegnate dinamicamente, a volte ciò potrebbe accadere, ma poiché l'ordine di precedenza determina apparentemente quale delle proprietà è effettivamente impostata sull'oggetto appena creato - questo sembra più che qualcosa di simile a un comportamento indefinito che è meglio evitare.
genera un errore per me su cromo v40 'SyntaxError Uncaught: proprietà data duplicata nell'oggetto letterale non ammessi in stretta mode' ma non e 'colto da' try..catch' – Xotic750
Esso restituisce 'true' per me su chromium v42/firefox 37, potrebbe richiedere il flag "Experimental JavaScript features" per ottenere il comportamento equivalente su v40? – user3467349
Si desidera eseguire lo script in ES6 (sperimentale) o ES5? Chromium v42 e firefox 37 ora funzionano come standard in modalità ES6? – Xotic750