Los cierres en js (y casos de uso) generalmente no se recomiendan para usar cierres porque extenderá el ciclo de vida de las variables y no puede liberarse inmediatamente después del uso

En primer lugar, haga referencia a https://www.jb51.net/article/158651.htm (el hogar del guión)

 

Las tres características principales de los cierres son:

1. Función función anidada

2. Las funciones internas pueden acceder a variables de funciones externas

3. Los parámetros y las variables no se recuperarán.

 

Requisito: cuando hace clic en li, ingresará el índice correspondiente de li

 

Ejemplo: código de error 1

La salida será el índice de la última li porque el navegador cargará todos los elementos al principio y onclick solo cargará la i cuando se haga clic en ella. Será incorrecto.

          var hs = document.getElementById ("ID de etiqueta html" ); 
             
            var lists = hs.children;
             for ( var i = 0; i <lists.length; i ++ ) {
                 var li = lists [i]; 

                // imprimir en este momento El i correspondiente a li es definitivamente incorrecto. 
               
                Seré el último valor li.onclick = function () { 
                    console.log (i);    // El último número de i que se imprimió en este momento 
                } 
            }}    

Ejemplo: solución

   var hs = document.getElementById ("html 标签 ID" ); 
             
            listas var = hs.children;
            para ( var i = 0; i <lists.length; i ++ ) {
                 var li = lists [i]; 
                
                li.index = i;    // 为 每个 li 绑定 i 
   
               
                li.onclick = function () { 
                    console.log ( this .i);    // 输出 this.li 
                } 
            }    

Ejemplo: solución de cierre

            var hs = document.getElementById (" htmltag ID" ); 
             
            var lists = hs.children;
             for ( var i = 0; i <lists.length; i ++ ) {
                 var li = lists [i]; 

               ( function (i) {   // Los parámetros característicos del cierre no desaparecerán inmediatamente después de usarse 
                    li.onclick = function () { 
                    console.log (i);    
                } 
               }) (i); 
            }                

 

Supongo que te gusta

Origin www.cnblogs.com/gaoSJ/p/12725854.html
Recomendado
Clasificación