Ejecutar este código en Chrome y Safari sería diferente. Aviso, la función es asíncrona.
(async function(v) { console.log(v) })('@')
Safari fuera:
1 - '@'
Chrome fuera:
1 - '@'
Ahora se ve bien, pero ¿y si le agregamos algo?
(async function(v) { console.log(v) var v = v || '#'; console.log(v) })('@')
Safari fuera:
1 - undefined 2 - '#'
Chrome fuera:
1 - '@' 2 - '@'
Ya no se pasa V como parámetro, se anula incluso justo después de que comienza el cuerpo de la función. Parece que el operador izquierdo de Safari se ejecuta primero y reemplaza todos los parámetros pasados con los nuevos que están definidos en un ámbito. ¿Es esto un error?