登录
首页 >  文章 >  前端

为什么这段 JavaScript 代码中的 `i` 始终输出 6?

时间:2024-12-29 09:12:44 279浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《为什么这段 JavaScript 代码中的 `i` 始终输出 6?》,很明显是关于文章的文章哈哈哈,其中内容主要会涉及到等等,如果能帮到你,觉得很不错的话,欢迎各位多多点评和分享!

为什么这段 JavaScript 代码中的 `i` 始终输出 6?

js 闭包问题

给定以下代码:




    
    
    
    document
    


    
    
    
    
    
    

    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

问题:

执行此代码时,为什么输出的始终是 6?

答案:

这是由于 javascript 中的闭包所致。当为每个输入按钮设置单击事件处理程序时,会创建一个闭包,该闭包包含当前的 i 值。单击任何按钮时,都会调用闭包,并将当前的 i 值打印到控制台。然而,由于 i 是闭包内的变量,当单击最后一个按钮时,它始终保留其最终值,即 6。

要解决此问题,可以在单击事件处理程序内使用立即调用函数表达式 (iife) 来创建新作用域,并为每个按钮指定一个唯一的 i 值:

for (var i = 0; i < oInput.length; i++) {
  oInput[i].index = i;
  (function(index) {
    oInput[i].onclick = function() {
      for (var j = 0; j < oLi.length; j++) {
        console.log(index);
        oLi[j].style.display = "block";
      }
      console.log(index);
      oLi[index].style.display = "none";
    }
  })(i);
}

今天关于《为什么这段 JavaScript 代码中的 `i` 始终输出 6?》的内容就介绍到这里了,是不是学起来一目了然!想要了解更多关于的内容请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>