<!DOCTYPE>
<html>
<head>
<link rel="stylesheet" href="styles.css"/>
<body>
<ul id="people-list"></ul>
<script src="app.js"/>
</body>
</head>
</html>
***app.js***
var people = ["alf","kay","jay","may"];
var list = document.getElementById("people-list");
for(var i =0; i< people.length; i++){
var person = people[i];
var element = document.createElement("li");
(function (){
var person = person;
element.innerText = person;
element.addEventListener("click",function(){
alert("You clicked on "+ person);
});
}());
list.appendChild(element);
}
为什么在IIFE中未引用在Global Scope中创建的“ person”变量,并因此生成未定义列表,但随后在IIFE中将变量名称从(例如,var person更改为var person2,并随后更改了警报)进行了更改使代码正常工作。
由于吊装var person = person
正好等于
var person;
person = person;
您不能person
在外部范围中引用该变量。它完全被局部变量所遮盖,因此您要为其分配未定义的局部变量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句