为了账号安全,请及时绑定邮箱和手机立即绑定

作用域的问题,可以讲解一下下面代码运行的过程吗?

作用域的问题,可以讲解一下下面代码运行的过程吗?

慕小课108 2020-04-07 23:11:42
<!DOCTYPE html><html><head>    <meta charset="utf-8"> <title>变量、作用域</title>    </head><body> <button>1</button> <button>2</button> <button>3</button>    <script type="text/javascript">//     var btns = document.getElementsByTagName('button');//          for (var i = 0; i < 3; i++) {//              btns[i].onclick = function () {//     alert(i + 1);//     };//    }//在此处修改代码        var btns = document.getElementsByTagName("button");        for(var i = 0,len = btns.length;i < len;i++){;            myChange(i);        }        function myChange(i){            btns[i].onclick = function(){                alert(i + 1);            }        }    </script></body></html>
查看完整描述

1 回答

?
第二钢协

TA贡献29条经验 获得超5个赞

// 你的所有变量全是用 var 和 function 定义的,所以存在变量提升

// 1. 变量提升(将所有变量的声明提升到当前作用域最前面):
//    var btn;
//    function myChange;

// 2. 执行:
//    btn = document.getElementsByTagName("button");
//    for (var i = 0, len = btns.length; i < len; i++) {
//        myChange(i);
//    }


查看完整回答
反对 回复 2020-04-08
  • 第二钢协
    第二钢协
    建议你看看es6 的 let, 别用var定义变量,变体提升很可能导致一些无法预料的问题,建议在以后的开发过程中都用let,摒弃var
  • 1 回答
  • 0 关注
  • 640 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信