Declaraciones automáticas de inserción y devolución de punto y coma [duplicado]

Esta pregunta ya tiene una respuesta aquí:

¿Cuáles son las reglas para la inserción automática de punto y coma (ASI) de JavaScript? 4 respuestas

Como sabrás, ECMAscript intenta ser inteligente y se insertará automáticamentepunto y coma Si no los escribiste explícitamente. Ejemplo simple

function foo() {
    var bar = 5

    return bar
}

seguirá funcionando como se espera. Pero hay algunas advertencias si confías en eso. Si reescribimos esa función como tal.

function foo() {
    var bar = 5

    return
    {
        bar: bar
    }
}

.. esa función ahora regresaríaundefined porque el intérprete insertaría ese punto y coma justo después de lareturn declaración (esa es una razón por la que siempre debes traer llaves en la misma línea que una declaración).

Sin embargo, sabiendo todo esto me pregunto ahora cómo.seguro a return Declaración como la siguiente es, a través de navegadores y versiones

function foo() {
    var a = true,
        b = true,
        c = false;

    return a 
            && b
            && c;
}

Acabo de escribir un similarreturn statement En un entorno de producción. Solo porque sabía que los "problemas" con ECMAscript no son tan inteligentes acerca de la inserción de punto y coma, me pregunto si ese código funciona al 100%. En mis primeras pruebas en FF / Chrome / IE (últimas versiones), esto parece estar totalmente bien, pero ¿es realmente así?

Hace elinserción automática de punto y coma "despertar" si hay algo más que elreturn declaración en esa línea? ¿Alguien puede proporcionar detalles a nivel de implementación sobre esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta