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?