JavaScript创建十个a标签,点击每个a标签弹出对应的序号。
先来看错误的版本👇
1 | let i, a |
这样子最终点击每个a标签弹出的都是10,因为给a标签绑定点击事件的时候并没有触发alert(i)
的函数,而alert(i)
真正执行实在a标签被点击了之后,这时 i 作为一个全局变量已经是10了。
使用let块级作用域
1 | let a |
利用 let 来声明 i,这样每次循环都会产生一个 i 的块级作用域,每个块级作用域中的 i 的值是不同的。每次触发点击事件,alert(i)
都会取对应的块级作用域中找 i 的值。从而避免了都是10的错误结果。
使用立即执行函数
1 | let a, i |