Dígale con confianza al entrevistador que forEach no puede salirse del circuito

Si el entrevistador o alguien le pregunta cómo foreach sale del bucle, ¡dígale en voz alta que no puede salir! ! ! ! ! ! ! ! ! !

foreach no puede saltar fuera del ciclo

¿por qué?

Primero veamos la implementación general de foreach.

Array.prototype.customForEach = function (fn) {
    for (let i = 0; i < this.length; i++) {
        fn.call(this, this[i], i, this)
    }
}

list.customForEach((item, i, list) => {
    console.log(item, i, list)
})

let list = [1,2,3,4,5]

list.forEach((item,index,list)=>{
    console.log(item,index,list)
})

list.customForEach((item,index,list)=>{
    console.log(item,index,list)
})

imagen.png

Está bien que los dos resultados de salida sean iguales. Esta es la implementación general de foreach. Ahora que conoce su implementación, debe saber por qué no puede salirse del bucle♻️. Si no lo sabe, eche un vistazo al siguiente ejemplo.


function demo(){
    return 'demo'
}

function demo2(){
    demo()
    return 'demo2'
}

demo()

Llame a la función demo en la función demo2, ¿el retorno de la función demo puede impedir la ejecución de la función demo2? Obviamente no, el retorno en la función demo no tiene nada que ver con la función demo2. Ahora, si mira hacia atrás en la implementación de foreach, comprenderá que no puede salirse del ciclo.

¿Algunos estudiantes dijeron que no es posible salirse del bucle lanzando un error? Sí. Eche un vistazo al ejemplo a continuación.


let list = [1,2,3,4,5]

try {
    list.forEach((item, index, list) => {
        if (index === 2) {
            throw new Error('demo')
        }
        console.log(item)
    })
} catch (e) {
    // console.log(e)
}

imagen.png

El resultado es lo que queremos, pero mira el código, ¿qué persona normal escribiría un código como este? ¿No es necesario usar foreach? U otras palabras clave de bucle no coinciden.

fin

Hay refutaciones en el área de comentarios, ¡muéstrame tu código!!!!!!!!!

Supongo que te gusta

Origin juejin.im/post/7259595485090906149
Recomendado
Clasificación