Ambito dei parametri di funzione predefiniti in javascript

Sto giocando con alcune funzionalità di EcmaScript 2015 e devo dire che le specifiche sono piuttosto difficili da comprendere.

Capisco perfettamente che questo codice dovrebbe generare errori di qualche tipo:

(function(a = b, b = 1) { })(); 

E so che il valore predefinito potrebbe utilizzare l’ambito esterno:

 (function() { let c = 1; return (function(a = c) { return a === 1; })(); })(); 

Ma non capisco perché questi esempi non siano buoni:

 (function() { let a = 1; (function(a = a) { })(); })(); (function() { let b = 1; (function(a = b, b = 2) { })(); })(); 

My Chrome 59.0.3071.115 genera ReferenceError che la variabile non è definita.

Sembra che Chrome stia facendo qualche ottimizzazione in cui viene creato solo 1 ambito in cui tutti i parametri sono impostati come inaccessibili e vengono aggiunti uno alla volta dopo il loro incarico.

Qualche prova di ciò potrebbe essere:

 (function(a = () => b, b = 2) { return a() === 2; })(); 

Questa mi sembra un’occasione mancante per i miei gusti e mi chiedo se le specifiche impongono di utilizzare solo 1 ambito qui o si tratta solo di dettagli di implementazione v8.

Qualcuno potrebbe indicarmi di inserirmi nelle specifiche che potrebbero chiarire questo?