大家好,又见面了,我是你们的朋友全栈君。
let和var的差别
1、let没有变量提升,申明变量的同时必须对变量赋值
2、let不允许重复申明变量
3、let的作用域是块级作用域,这一点在for循环中可以提现
<ul id=”ul1″>
<li class=”li”>1</li>
<li class=”li”>2</li>
<li class=”li”>3</li>
<li class=”li”>4</li>
</ul>
<script>
window.onload = function () {
var app = document.getElementsByClassName(‘li’);
// for循环变量输出
// for (var i = 0; i < app.length; i++) {
// // 在for循环里绑定的事件要等循环结束后才会执行
// app[i].onclick = function () {
// console.log(i)
// };
// }
// // 第一个循环这里点击输出的都是4
// // 第一个for循环拆解后就是下面这个for循环
// for (var i = 0; i < app.length; i++) {
// var ss = function () {
// console.log(i)
// };
// }
// // 在for循环运行结束后再执行点击事件,调用ss函数,此时变量i的值当然是4
// app[0].onclick = ss
// app[1].onclick = ss
// app[2].onclick = ss
// app[3].onclick = ss
// let申明的变量只在块级作用域{}中,所以在for循环外调用会报undefined
// for (let i = 0; i < app.length; i++) {
// let ss = function () {
// console.log(i)
// };
// }
// // 在for循环运行结束调用ss报错
// app[0].onclick = ss
// app[1].onclick = ss
// app[2].onclick = ss
// app[3].onclick = ss
// 使用let变量可以直接在for循环变量输出i
for (let i = 0; i < app.length; i++) {
app[i].onclick = function () {
console.log(i)
};
}
}
</script>
转载于:https://www.cnblogs.com/webwangjie/p/9370763.html
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/107400.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...