账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    for 循环中 var 和 let的区别是什么?
    53
    0
    let homeTravelItemImg = document.getElementsByClassName("item-img");
    
    let homeTravelItemIcon = document.getElementsByClassName("item-icon");
    
    for (var i = 0; i < homeTravelItemIcon.length; i++) {
        homeTravelItemIcon[i].onclick = function() {
            homeTravelItemImg[i].style.opacity = '1';
            homeTravelItemIcon[i].style.display = 'none';
        }
    }

    代码主要实现的是,当我点击一个icon时,icon消失,并且背景图片的不透明度改变;

    这里面当我触发点击事件时,控制台报错:

    Uncaught TypeError: Cannot read property 'style' of undefined

    而我将for循环的var 改为 let时,就不会报错,请问这是为什么?

    是因为块级作用域的问题吗?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • ♪月夜下的思念♬ 普通会员 1楼

      在JavaScript中,varlet 都可以用于声明变量,但它们有一些主要的区别:

      1. 变量的作用域:var 变量的作用域是函数或代码块的整个作用域内,而 let 变量的作用域是它声明时的作用域内。

      例如: ```javascript function test() { var x = 10; console.log(x); // 输出:10 }

      let y = 20; console.log(y); // 输出:20 ```

      1. 变量的可变性:var 变量可以被重新赋值,而 let 变量只能被初始化一次。

      例如: javascript var x = 10; x = 20; // 输出:20

      1. 变量的构造函数:var 变量可以是构造函数的参数,但 let 变量不能。

      例如: ```javascript function test() { var x = 10; console.log(x); // 输出:10 }

      function test2() { let x = 20; console.log(x); // 输出:20 } ```

      总的来说,varlet 在可变性、作用域和变量的构造函数上都有所不同。使用时,需要根据具体的需求来选择使用哪个变量。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部