var 和 let 的区别
因为ES5之前 除了 函数方法 其他的都和是没有 作用域 概念的 下面给你来个例子:
<div> <button>1</button> <button>2</button> <button>3</button> <button>4</button> <button>5</button> </div> <script> var ele = document.getElementsByTagName("button"); for (var i = 0 ; i < ele.length;i++ ){ ele[i].addEventListener(‘click‘,function (){ console.log(‘你点击了第‘ + i + ‘个 按钮‘); }) } </script>
无论你点击那个 控制台都是 点击了 第5个按钮。为什么呢 这就是作用域的问题了。
你尝试换成 let :
<script> var ele = document.getElementsByTagName("button"); for (let i = 0 ; i < ele.length;i++ ){ ele[i].addEventListener(‘click‘,function (){ console.log(‘你点击了第‘ + i + ‘个 按钮‘); }) } </script>
这个错误就完美解决了。
至于为什么 那就是 作用域的问题了。
多说没用 多实践你就知道 var 他的缺陷了 ,他的作用域是全范围的,可以当做全局作用域了,除了名冲突 不然他的作用域是最Big的.