ES5和ES6的區別(let和var)
阿新 • • 發佈:2020-11-04
<body>
<button>Click1</button>
<button>Click2</button>
<button>Click3</button>
<button>Click4</button>
<button>Click5</button>
</body>
<!--ES5中的var是沒有塊級作用域的
ES6中的let是由塊級作用域的(if/for)
-->
<script type="text/javascript">
//下面的閉包程式碼相當於上面這個,宣告一個方法,然後立即傳引數呼叫
/*
function a(name){
console.log(name)
}
a('小紅')
*/
const btns = document.getElementsByTagName('button')
for (var i = 0; i < btns.length; i++) {
(function (num){
btns[i].addEventListener('click', function () {
console.log('第' + num + '個按鈕被點選')
})
})(i)
//當for遍歷到i等於5時,被 i < btns.length 判斷擋住了
//如果不閉包處理,for迴圈在點選按鈕之前先遍歷一遍,最後i等於5,所以點選所有的按鈕,都是輸出‘第5個按鈕被點選’
}
</script>