JavaScript 点击下面的li,会弹出什么结果?
问题
点击下面的li,会弹出什么结果??
(闭包的选项卡的那个,都输出最后一个数,可以用闭包来解决,也可以用自定义属性,自定义属性的性能会更好;)
都会弹出3,因为for中的i不是局部变量,是全局变量,window的属性,是累加的结果。
改进如下
参考
<ul>
<li>1111</li>
<li>2222</li>
<li>3333</li>
<li>4444</li>
</ul>
<script>
var aLi = document.getElementsByTagName('li');
console.log("aLi", aLi)
for (let index = 0; index < aLi.length; index++) {
aLi[index].onclick = function () {
console.log(index);
}
}
</script>
<ul>
<li>1111</li>
<li>2222</li>
<li>3333</li>
<li>4444</li>
</ul>
<script>
var aLi = document.getElementsByTagName('li');
console.log("aLi", aLi)
for (let index = 0; index < aLi.length; index++) {
(function (i) {
aLi[i].onclick = function () {
console.log(i);
}
})(index)
}
</script>
更多面试题
如果你想了解更多的前端面试题,可以查看本站的WEB前端面试题 ,这里基本包涵了市场上的所有前端方面的面试题,也有一些大公司的面试图,可以让你面试更加顺利。
面试题 | ||
---|---|---|
HTML | CSS | JavaScript |
jQuery | Vue.js | React |
算法 | HTTP | Babel |
BootStrap | Electron | Gulp |
Node.js | 前端经验相关 | 前端综合 |
Webpack | 微信小程序 | - |
这些题库还在更新中,如果你有不错的面试题库欢迎分享给我,我整理后放上来;人人为我,我为人人,互帮互助,共同提高,祝大家都拿到心仪的Offer!